内容来自网络,用做查询记录查看。
请求路径概念:客户端请求访问服务端的路径,请求路径包括资源路径和资源名称
集成接口调用时报错404,一般排查请求路径是否正确。
1.请求路径的构成
客户端提交请求路径的目的是为访问服务端的指定资源,所以请求路径由两部分构成:资源路径与资源名称。即
请求路径 = 资源路径 + 资源名称
资源路径与资源名称的分水岭为:请求路径中的最后一个斜杠。斜杠前的部分称为资源路径,斜杠后的部分称为资源名称。例如:
请求路径: http://localhost:8888/01-primary/some.do
资源路径: http://localhost:8888/01-primary
资源名称: some.do
URI:统一资源标识符
URL:统一资源定位符
2.请求路径的分类
根据是否可以唯一的定位一个资源标准,可以将路径划分为两类:绝对路径与相对路径。
绝对路径:可以唯一的定位一个资源。在Web应用中,一般情况下,以请求协议开头的路径为绝对路径。绝对路径以URL形式表示。
相对路径:仅仅依靠此路径,无法唯一的定位一个资源。但若将其再与一个参照路径相结合后,就可以转换为一个可以定位资源的绝对路径,这样的路径,称为相对路径。在Web应用中,一般情况下,不以请求协议开头的路径为相对路径。相对路径以URI形式表示。
转换关系: 绝对路径 = 参照路径 + 相对路径
URI:统一资源标识符
URL:统一资源定位符
3.相对路径的分类
以相对路径是否以斜杠开头划分,可以将相对路径划分为两类:以斜杠开头的相对路径,与不以斜杠开头的相对路径。
对于以斜杠开头的相对路径,再根据路径出现的位置的不同,可以划分为两类:前台路径与后台路径。
前台路径:出现在HTML文件,及JSP文件的静态部分中的以斜杠开头的相对路径,称为前台路径。例如,出现在<img/>的src中的路径、<a/>的href中的路径、<form/>的action中的路径、<script/>的src。。。前台路径的解析者是浏览器。
后台路径:出现在Java代码、JSP文件的动态部分、及XML、Properties等配置文件中的以斜杠开头的相对路径,称为后台路径。后台路径的解析者是服务器。
注意,不以斜杠开头的相对路径,其路径解析者,根据路径出现的位置不同,分别可以是浏览器或服务器。
4.转换规则
不同的路径解析者,对同一个相对路径的解析结果是不同的。当然,所谓解析结果,指的是将相对路径转换为的最终的绝对路径。由于绝对路径 = 参照路径 + 相对路径,所以这里的解析规则,就是指为这个相对路径匹配上一个怎样的对照路径。或者说,我们要学习的重点是,浏览器、服务器对相对路径所匹配的参照路径是谁。
前台路径:其参照路径为当前Web服务器的根。
后台路径:其参照路径为当前Web应用的根。
不以斜杠开头的相对路径:其参照路径为当前请求路径的资源路径。
例如,
请求路径: http://localhost:8888/01-primary/xxx/ooo/jjj/some.do
当前Web服务器的根: http://localhost:8888
当前Web应用的根: http://localhost:8888/01-primary
资源路径: http://localhost:8888/01-primary/xxx/ooo/jjj
5.绝对路径分类
根据路径的作用的不同,可以分为两类:资源定义路径,与资源请求路径。
资源定义路径:用于表示资源在服务端的位置。换句话说,就是客户端若要访问服务端的某个资源,必须要提交的绝对路径。
资源请求路径:客户端所发出的对指定资源的请求路径。
当编写路径得时候,加不加斜杠都能访问时,最好都加上斜杠
6.特例
Response的sendRedirect()方法中的以斜杠开头的相对路径,按照前面的定义,其为后台路径。后台路径的参照路径应为当前WEB应用的根,但实际却不是,而是当前WEB服务器的根。缺少项目得名称。
解决这个问题有两种方式:
不加/
在路径前面加上request.getContextPath()
${pageContext.request.contextPath}解决项目路径和服务器名字不一样时访问出错得问题,只要涉及路径问题,我们就可以使用,故建议使用
请求转发和重定向可以同时使用得时候,我们最好使用重定向,因为这样做可以反恶意刷新
————————————————
版权声明:本文为CSDN博主「樱雨刀舞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32639133/article/details/82730962