Java访问路径相关
初学java的路径问题
URL , URI
URL是一个地址,URI是一个资源;URI强调的是给资源标记命名,URL强调的是给资源定位
URI 是统一资源标识符,而 URL 是统一资源定位符。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。这是因为 URI 还包括一个子类,即统一资源名称 (URN),它命名资源但不指定如何定位资源。
在Java类库中,URI类不包含任何访问资源的方法,它唯一的作用就是解析。相反的是,URL类可以打开一个到达资源的流
访问路径问题
无论URL或URI一般都分为2部分,资源路径与资源名称
路径最后一个/后的为资源名称,/前面为资源路径,
资源路径能否独立完成资源的准确定位为依据,将访问路径分为绝对路径和相对路径,
绝对路径 = 参照路径 + 相对路径,浏览器或服务器会自动为相对路径添加参照路径
相对路径又分为以/开头的和以路径名称开头的两类
以/开头的又分为前台路径(作用:查找)和后台路径(作用:标识)
## 以/开头的相对路径
以/开头的前台路径:由浏览器解析执行的代码中所包含的路径,如html,css,js中的路径和JSP中的静态路径(html中的路径),前台路径的参照路径是web服务器的根路径,协议+主机地址,即http://127.0.0.1:8080
以/开头的后台路径:由服务器解析执行的代码中所包含的路径,java代码中的路径,jsp中的动态部分路径,xml中配置的路径;后台路径的参照路径是web应用的根路径,即WebRoot,协议+主机地址+项目名称,即http://127.0.0.1:8080/serlvlet_01
## 以路径名称开头的
其参照路径是当前访问路径的资源路径
以/开头的相对路径的举例:
以/开头的前台路径:
示例1:在html中一个图片标签
<*img alt = “car” src = “/imgs/car.jpg”/>
上述是在HTML中所以是一个前台路径,所以加/;其参照路径是http://127.0.0.1:8080,其转换的绝对路径为http://127.0.0.1:8080/imgs/car.jpg,如果在web服务器下是没有imgs这个目录的,就无法显示
<*img alt = “car” src = “/servlet/imgs/car.jpg”/>在web服务器下是有servlet_01这个目录的,所以可以显示,因而这个图片地址还要加上项目名称才行
示例2:html中的表单路径,我们通常访问格式如下
<*form action = “someServlet” method = “POST”>
xxxxxxxxxxxxxxxxxxxx
以路径名称开头的举例:
以路径名称开头,其参照路径是当前访问路径的资源路径
示例5:index.html中的路径
<*img alt = “car” src = “imgs/car.jpg”/>与<*img alt = “car” src = “/servlet_01/imgs/car.jpg”/>这个前台路径都可以显示
<*img alt = “car” src = “imgs/car.jpg”/>的参照路径是当前访问路径的资源路径,即初始化页面的资源路径,http://127.0.0.1:8080/serlvlet_01/index.html中的资源路径
http://127.0.0.1:8080/serlvlet_01,然后加上/和imgs/car.jpg即为
http://127.0.0.1:8080/serlvlet_01/imgs/car.jpg,所以可以显示。form表单的action属性以路径开头也是这个原理
示例6
request.getRequestDispatcher(“otherServlet”).forward(request,response);
这个不加/,其参照路径就是当前访问路径(http://127.0.0.1:8080/serlvlet_01/someServlet)的资源路径(http://127.0.0.1:8080/serlvlet_01);其绝对路径是http://127.0.0.1:8080/serlvlet_01/otherServlet,所以也是可以访问的
response.sendRedirect(“otherServlet”);也是可以访问的,不需要加/,这个以路径开头的不是特例
注意;如果加/,不加/都可以,建议加/,因为加/的路径的参照路径是web服务器或应用的根路径是不可变的;而不加/的参照路径是当前访问路径的资源路径是可变的
下一篇: python相对路径的问题
推荐阅读
-
Ajax跨域访问Cookie丢失问题的解决方法_AJAX相关
-
Java有向无权图的单源点最短路径-邻接矩阵和邻接表
-
01 java 基础:jdk jre path classpath 相关问题
-
Swagger访问路径添加前缀
-
php使用Smarty的相关注意事项及访问变量的几种方式_php模板
-
windows无法访问指定设备路径或文件 下载文件的点击数回填
-
servlet之web路径问题_动力节点Java学院整理
-
浅谈Java工程读取resources中资源文件路径的问题
-
请教一个相当基础的问题,Java中为什么拥有类可以访问内部类的私有成员? JavaAccessSUN
-
Java 读取类路径下的资源文件实现代码