相对路径与绝对路径 ${pageContext.request.contextPath}

简介: 绝对路径:是从盘符开始的路径,形如 C:\windows\system32\cmd.exe 相对路径:是从当前路径开始的路径,假如当前路径为C:\windows 要描述上述路径,只需输入 system32\cmd.exe 实际上,严格的相对路径写法应为 .\system32\cmd.exe 其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。

绝对路径:是从盘符开始的路径,形如
C:\windows\system32\cmd.exe
相对路径:是从当前路径开始的路径,假如当前路径为C:\windows
要描述上述路径,只需输入
system32\cmd.exe
实际上,严格的相对路径写法应为
.\system32\cmd.exe
其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。
假如当前路径为c:\program files
要调用上述命令,则需要输入
..\windows\system32\cmd.exe
其中,..为父目录。
当前路径如果为c:\program files\common files
则需要输入
….\windows\system32\cmd.exe

拿着这理解应该比程序里面好理解得多了。

${pageContext.request.contextPath}等价于<%=request.getContextPath()%>或者可以说是<%=request.getContextPath()%>的EL版
意思就是取出部署的应用程序名或者是当前的项目名称
比如我的项目名称是SpringMVC 在浏览器中输入为http://localhost:8080/SpringMVC/login.jsp

${pageContext.request.contextPath}<%=request.getContextPath()%>取出来的就是/SpringMVC,而”/”代表的含义就是http://localhost:8080
所以我们项目中应该这样写${pageContext.request.contextPath}/login.jsp

说一下亲身的例子大概就明白了。这里我先用的是相对路径,很多种情况下都没出错。

这里写图片描述

你看这个delete操作,我也是用的相对路径,那为甚么不会出错呢,因为请求路径只有一层,没有任何占位符,当HiddenHttpMethodFilter转换为DELETE请求的时候会去掉一层,所以不会出错,请求路径变成http://localhost:8080/emp/1001

这里写图片描述
但是这个edit就不容乐观了。

这里写图片描述

本来路径上有占位符的存在,所以转换的时候就不会认全。

这里写图片描述

就会出现这样的闹剧,请求多层本来就没有Handler处理的路径。

所以告诫大家,请尽可能多的使用相对路径

目录
相关文章
|
Java
jsp内置对象和路径
jsp内置对象和路径
98 0
|
Java
PageContext request session application区别以及EL表达式
PageContext request session application区别以及EL表达式
112 0
|
Java
${pageContext.request.contextPath}无法解析乱码使用不了
${pageContext.request.contextPath}无法解析乱码使用不了
156 0
${pageContext.request.contextPath}无法解析乱码使用不了
JavaWeb - request 对象中 getContextPath() 方法介绍
JavaWeb - request 对象中 getContextPath() 方法介绍
181 0
JavaWeb - request 对象中 getContextPath() 方法介绍
|
Java
JSP慕课网之application、page、pageContext、config、exception
JSP慕课网之application、page、pageContext、config、exception
114 0
|
Java Maven
JSP 使用 ${pageContext.request.contextPath} 无效
通过 ${pageContext.request.contextPath}可在JSP 中取得当前的项目绝对路径,比如当前项目是 http://localhost:8080/demo, 则 ${pageContext.request.contextPath} 代表的就是 /demo,其中 / 代表 http://localhost:8080,所以一般使用${pageContext.request.contextPath} 定位资源。