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

---javaWeb中的相对路径和绝对路径

2016-08-13 18:05 387 查看

问题

javaweb中,在表单的action,超链接,web.xml中的servlet-mapping的url-pattern,以及请求的装发,重定向都需要填写对应的路径。填写这些路径大致有两种方式,相对路径和绝对路径。在一般情况下,填写绝对路径肯定没有问题,但是填写相对路径就会出现问题。

例子:例如在WebRoot下有一个a.jsp和一个文件夹path,path下面有b.jsp和c.jsp,

a.jsp:

<h2>AAA page</h2>
<a href="path/b.jsp">TO BBB page</a>


b.jsp:

<h2>BBB page</h2>
<a href="c.jsp">To CCC page</a>


c.jsp:

<h2>CCC page</h2>


这样访问是没什么问题的,当添加一个servlet,a.jsp中改为
<a href="testServlet">To BBB page</a>
再在testServlet中转发到b.jsp时候,若在b.jsp中再去访问c.jsp就会出现问题。由servlet转发过去到jsp页面时显示的是servlet的url-pattern,这个时候jsp页面访问相对路径的其他资源时,就会出现路径混乱的问题。

绝对路径

编写绝对路径可以解决这种路径混乱的问题.

绝对路径

相对路径是指相对于某个基准目录的路径,而绝对路径在javaweb中指得是相对于当前web应用的上下文路径。例如
http://localhost:8080/WebApp10/a.jsp


“/”代表什么

需要交给servlet容器来处理的时候,代表当前应用的根路径

请求转发时
request.getRequestDispatcher("path/b.jsp").forward(request, response);


web.xml中的servlet访问路径
<servlet-mapping>

<servlet-name>TestServlet</servlet-name>

<url-pattern>/testServlet</url-pattern>

</servlet-mapping>


需要交给浏览器类处理的时候,代表web站点的根路径

请求重定向时
response.sendRedirect("/b.jsp");


表单中的action
<form action="/xxx.jsp"></form>


超链接
<a href="c.jsp">To CCC page</a>


编写绝对路径

如果/代表的是当前web站点的根目录,只需要在前面加上ContextPath就可以,在servlet中ContextPath可以由request.getContextpath()获取,在jsp中可以由application.getContextPath()获取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: