您的位置:首页 > 编程语言 > Java开发

JAVA WEB中的相对路径和绝对路径

2018-01-17 10:17 183 查看
最近项目中,遇到相对路径和绝对路径的问题,参考了一些博文,根据自己的理解整理了一下,今后如果有更深刻的理解,可另行修改。

前端

-JSP跳转
1.相对跳转

和当前uri有关,比如当前地址为:

localhost:8080/test/

点击前端链接以后 <a href="test.jsp"/>

地址变为:

localhost:8080/test/test.jsp

相当于将地址栏中地址最后一个"/"后面的内容,换成href的内容,组合成新的地址。

注:href以"/"开头,是从服务器的根目录开始的路径,这将不包括项目名

如:<a href="/test.jsp"/>

地址变为:

localhost:8080/test.jsp

2.绝对跳转

<a href="<%=basePath%>test.jsp"/>

地址变为:

<a href="/test.jsp"/>

<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort() + path + "/";
%>

注:依次获取协议名、服务器名、端口号和项目名

此外,绝对地址不能直接访问WEB-INF下的jsp页面

如果jsp页面放在WebContent下,可直接<%=basePath%>+xxx.jsp访问

如果jsp页面放在WEB-INF下,则需要通过springmvc、struts2等进行转发,比如:

<a href="<%=basePath%>test.jsp"/>

@RequestMapping("/test")
public String getTest() {
return "test/test";
}

-action跳转

1.相对跳转

与jsp跳转类似,比如ajax请求中:

../../xxx/xxx.action

2.绝对跳转

与jsp跳转类似

后端

-jsp跳转
1.相对跳转

@RequestMapping("/")
public String getIndex() {
return "WEB-INF/views/index.jsp";
}

不以"/"开头,是相对路径,根据当前目录进行跳转
2.绝对跳转

@RequestMapping("/")
public String getIndex() {
return "/WEB-INF/views/index.jsp";
}

以"/"开头,是绝对路径,从项目根目录开始的路径
-action跳转
1.相对跳转

与jsp跳转类似

2.绝对跳转

与jsp跳转类似

总结:

相对跳转:修改最后一个"/"后面的内容,需要考虑namespace,容易出错。

绝对跳转:使用已经配置好的basePath(前端)或“/”(后端),从项目根目录下开始写路径,建议使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: