URL(统一 资源定位符)、URI(统一资源标识符)都是由资源路径和资源名称组成。

 

访问路径按照路径是否可以独立完成资源准确定位的判别标准,可以将访问路径分为绝对路径相对路径

关系:绝对路径 = 参照路径 + 相对路径

绝对路径是一个详细的资源访问路径,但是相对路径需要详细说明。

相对路径:  ①以斜杠开头的相对路径  以路径名称开头的相对路径

①以斜杠开头的相对路径,根据路径所在文件所处位置的不同,分为前台路径和后台路径

前台路径:由浏览器解析执行的代码中所包含的路径。e.g:    html 、 css 、 js中的路径, jsp 文件中静态部分的路径 、HTML 标签中的路径.

例子: html 及 jsp 文件 中的 <img 、 <a href=" "></a>、 <form action=" "></form> 等 标签中的路径 再如, css 文件中的 background:img( 等属性中的路径, js 文件 中的 window.location.href = " " 等属性中的路径 ,都属于前台路径。

前台路径的参照路径是 Web 服务器的根路径 ,例如 http://127.0.0.1:8080 。!!!
将前台路径转换为绝对路径的工作,是由浏览器自动完成的。

该路径的作用是要为用户该路径的作用是要为用户提交对某种资源的请求,是要查找并定位服务器中的某资源。简单来说,前台路径的作用是提交对某种资源的请求,是要查找并定位服务器中的某资源。简单来说,前台路径的作用是“查找”。

例如:

超链接的例子

                  

表单例子

<!--
这是一个前台路径,前台路径的参数路径是当前Web服务器的根,即
http://localhost:8080
绝对路径 = 参数路径 + 相对路径
即浏览器会自动将这个前台路径转换为绝对路径
http://localhost:8080/loginServlet
在Web服务器的根目录中没有loginServlet这个东西,所以这个访问路径
是无法访问到loginServlet的,会报404
-->
<form action="/loginServlet" method="POST">
用户名:<input type="text" name="username"/><br>
<input type="submit" value="登录"/>
</form> <hr> <!--
这是一个前台路径,前台路径的参数路径是当前Web服务器的根,即
http://localhost:8080
绝对路径 = 参数路径 + 相对路径
即浏览器会自动将这个前台路径转换为绝对路径
http://localhost:8080/25-relativePath2/loginServlet
在Web服务器的根目录中存在25-relativePath2项目,而这个项目中存在loginServlet
所以,这个访问路径是可以访问到的
-->
<form action="/25-relativePath2/loginServlet" method="POST">
用户名:<input type="text" name="username"/><br>
<input type="submit" value="登录"/>
</form>

后台路径:由服务器解析执行的代码及文件中所包含的路径。e.g: java 代码中的路径、 jsp 文件动态部分( java 代码块)中的路径、 xml 等配置 文件中的路径( 配置 文件是要被 java 代码 解析后加载到 内存 的,其中的路径会出现在 Java 代码中 )等。

后台路径的参照路径是Web应用的根路径 。如 http://127.0.0.1:8080/primary 。!!!

将后台路径转换为绝对路径的工作,是由服务器自动完成的。

该路径的作用是标识出该资源在服务器中的路径,以便客户端能够按照这个设定路径来查找相应资源。简单来说,后台路径的作用是“标识”。

举栗子:

<!-- web.xml 配置属于后台路径-->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        id="WebApp_ID" version="2.5">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list> <servlet>
<description></description>
<display-name>LoginServlet</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.bjpowernode.servlets.LoginServlet</servlet-class>
</servlet>
<!--
这是一个后台路径,后台路径的参照路径是当前Web应用的根,即
http://localhost:8080/25-relativePath2
绝对路径 = 参照路径 + 相对路径
将相对路径转换为绝对路径工作,是由Web服务器完成的,服务器会将
这个相对路径转换为:
http://localhost:8080/25-relativePath2/loginServlet
后台路径的绝对路径,其作用是“标识”。即客户端要想访问我这里定义的LoginServlet
那么,必须要提交上面的绝对路径。 客户端现在提交的请求为:
http://localhost:8080/25-relativePath2/loginServlet
其与这里的绝对路径是相同的,所以这个请求是可以访问到LoginServlet的
-->
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>
这个栗子营养多!!!
public class SomeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 这是一个后台路径,后台路径的参照路径是当前Web应用的根,即
* http://localhost:8080/26-relativePath3
* 绝对路径 = 参照路径 + 相对路径
* 将这个相对路径转换为绝对路径的工作,是由Web服务器完成的。即服务器会将
* 这个相对路径转换为:http://localhost:8080/26-relativePath3/otherServlet
* 服务器中对于OtherServlet这个资源指定的访问路径是
* http://localhost:8080/26-relativePath3/otherServlet
* 请求路径与资源的“标识”路径是相同的,那么,这个请求是可以跳转成功的
*
*/
request.getRequestDispatcher("/otherServlet").forward(request, response); /*
* 注意,对于response的sendRedirect()方法完成的重定向,若其参数路径为“以斜杠开头的相对路径”
* 这个后台路径是个特例。只所以其为特例,是由sendRedirect()方法的本质决定的。这个方法不仅可以完成
* 在当前项目中资源的跳转,还可以跳转到其它项目中的资源。所以这个后台路径的参照路径为“当前Web服务器
* 的根”。
*
* 注意,只有这一种重定向是特例,将来还会有其它方式实现的重定向,但那里的重定向就不是特例,
* 而是遵循我们之前的路径转换理论
*/
// 下面的写法无法完成跳转
// response.sendRedirect("/otherServlet"); // 下面的写法可以完成跳转,但这样写不太好
// response.sendRedirect("/26-relativePath3/otherServlet"); // 下面的写法才是最好的写法
response.sendRedirect(request.getContextPath() + "/otherServlet");
}
}

②以路径名称开头的相对路径

以路径名称开头的相对路径 ,无论是出现在前台页面 ,还是出现在后台Java 代码或配置文件中其参照路径都是当前访问路径的资源路径 。 即使是response的sendRedirect()方法的参数路径,若不以斜杠开头,其也属于以路径名称开头的相对路径”类,参照路径为当前访问路径的资源路径。

 举栗子:

public class SomeServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 这是一个“以路径名称开头的相对路径”,其参照路径为“当前访问路径的资源路径”
* 就本例而言,是 http://localhost:8080/27-relativePath4
* 绝对路径 = 参照路径 + 相对路径
* 服务器会自动将这个相对路径转换为绝对路径:
* http://localhost:8080/27-relativePath4/otherServlet
*
*/
request.getRequestDispatcher("otherServlet").forward(request, response); /*
* 注意,对于response的sendRedirect()方法完成的重定向,若参数路径不以斜杠开头,
* 其是满足之前的路径理论的。其不是特例。下面的相对路径是可以完成跳转的。
*
*/
response.sendRedirect("otherServlet"); //注意,若相对路径加上斜杠与不加斜杠,都可以完成跳转,那么,就要加上斜杠。
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://java.sun.com/xml/ns/javaee"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      id="WebApp_ID" version="2.5"> <welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list> <!--
  服务器会将这个相对路径转变为如下的绝对路径:http://localhost:8080/26-relativePath3/otherServlet
  这个绝对路径的意思是,若想访问我这里定义的OtherServlet,那你就必须提交如上形式的访问路径。即这里指定了OtherServlet这个资源的访问路径。
   注:其中 <url-pattern>/otherServlet</url-pattern>中的/otherServlet的/是不能去掉的,不能按照以路径名称开头的相对路径去想,
    因为这里是个配置文件只是用来标识的,并没有访问的资源路径,所有不可以去掉/
          
   -->
<servlet-mapping>
<servlet-name>OtherServlet</servlet-name>
<url-pattern>/otherServlet</url-pattern>
</servlet-mapping>
</web-app>

Servlet中关于路径的小结的更多相关文章

  1. Servlet中相对路径与绝对路径

    相对路径与绝对路径: 相对路径:相对路径指的是相对于当前文件所在目录的路径! http://localhost:8080/servlet01/ http://localhost:8080/servle ...

  2. 在开发中关于javaweb中的路径问题小结

    转自http://blog.csdn.net/yinyuehepijiu/article/details/9136117 在javaweb项目中添加配置文件,满足连接数据库配置参数以及其他自定义参数存 ...

  3. JAVA中获取路径

    内容来自于snannan_268 关键字: java中获取路径 JAVA中获取路径: 1.jsp中取得路径:   以工程名为TEST为例: (1)得到包含工程名的当前页面全路径:request.get ...

  4. Java Web开发中路径问题小结

     Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...

  5. java中servlet的各种路径

    1. web.xml中<url-pattern>路径,(叫它Servlet路径!) > 要么以“*”开关,要么为“/”开头 2. 转发和包含路径 > *****以“/”开头:相 ...

  6. servlet中的相对路径和绝对路径 及/, ./, ../的区别

    ./ 当前目录../ 父级目录/ 根目录资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路径,就 ...

  7. Servlet中路径信息总结

    ./ 当前目录 ../ 父级目录 / 根目录 资源寻找都是依靠路径,资源存储方式是按照哈希表运算的,所以路径的计算其实就是哈希值的计算. servlet中,所有路径的配置都要用绝对路径. 什么是绝对路 ...

  8. Servlet中转发和重定向的路径问题【转】

    转发和重定向的路径问题 Servlet中有两种方式获得转发对象(RequestDispatcher):一种是通过HttpServletRequest的getRequestDispatcher()方法获 ...

  9. JSP、Servlet中的相对路径和绝对路径 页面跳转问题

    转自:http://blog.csdn.net/wym19830218/article/details/5503533/ 1.JSP.Servlet中的相对路径和绝对路径 前提:假设你的Http地址为 ...

随机推荐

  1. 简单Kibana命令

    1 查看健康状态 GET _cat/health?v epoch timestamp cluster status node.total node.data shards 1531290005 14: ...

  2. luogu P2765 魔术球问题 (最小路径覆盖)

    大意:给定n根柱子, 依次放入1,2,3,...的球, 同一根柱子相邻两个球和为完全平方数, 求最多放多少个球. 对和为平方数的点连边, 就相当于求DAG上最小路径覆盖. #include <i ...

  3. 怎样理解String的slice(), subString(), substr()三个方法

    String.prototype.slice() 是js字符串的切片工具方法, 用于对字符串做'裁剪'操作, 不改变原字符串. 'helloworld'.slice(0,5); // 'hello'; ...

  4. 【原创】大数据基础之Kudu(5)kudu增加或删除目录/数据盘

    kudu加减数据盘不能直接修改配置fs_data_dirs后重启,否则会报错: Check failed: _s.ok() Bad status: Already present: FS layout ...

  5. linux mint 安装xshell

    之前在Windows上进行开发的时候,SSH重度依赖SecureCRT或者XShell工具,现在把办公环境迁移到Linux后,每次连接都需要输入密码,尤其是需要跳板机的时候,需要逐级输入,十分麻烦.所 ...

  6. javascript相关的增删改查以及this的理解

    前两天做了一个有关表单增删改查的例子,现在贴出来.主要是想好好说一下this. 下面贴一张我要做的表格效果. 就是实现简单的一个增删改查. 1.点击增加后自动增加一行: 2.点击保存当前行会将属性改成 ...

  7. JS和JS是IE上JavaScript或JScript的缩写。

    JS和JS是IE上JavaScript或JScript的缩写.javascript是所有浏览器的开放式标准脚本语言JScript是微软自己的开放式脚本语言标准,只有微软的IE浏览器遵循.JScript ...

  8. vue全局设置请求头 (封装axios请求)

    Vue.http.interceptors.push((request, next) => { // 请求发送前的处理逻辑 request.headers.set('Authorization' ...

  9. python之文件 I/O

    打印到屏幕 最简单的输出方法是用print语句,你可以给它传递零个或多个用逗号隔开的表达式.此函数把你传递的表达式转换成一个字符串表达式,并将结果写到标准输出如下: >>> prin ...

  10. SmartBinding与kbmMW#3

    前言 在SmartBinding #2中,我介绍了新的自动绑定功能,支持在Form设计器中直接定义绑定.不仅如此,kbmMW SmartBind还有更多很酷的功能,即将发布的kbmMW中的SmartB ...