绝对路径和相对路径
1.绝对路径的问题
1》开发时建议编写“绝对路径”:写句对路径一定没有问题,但相对路径可能会有问题
在servlet 转发到JSP页面是,此时浏览器地址栏上显示的是servlet的路径,若JSP页面的超链接还是相对于该JSP页面的地址则可能会出现路径混乱问题
/a.jsp
-path
/b.jsp
/c.jsp
a.jsp -> /Servlet ->转发->b.jsp(有一个超链接:和b.jsp在同一目录下的c.jsp)->无法访问
2.编写绝对路径可以避免以上问题:
1》什么是绝对路径:
相对于contextPath的路径的路径叫做绝对路径,及任何路径都必须带上contextPath:
http://localhost:8080/contextPath(当前WEB应用的上下文路径)/c.jsp v
http://localhost:8080/contextPath(当前WEB应用的上下文路径)/c.jsp x
2》如何完成编写
若/代表的是站点的根目录,在其前面加上 contextPath 就是可以了。而contextPath可以由request 或 application 的getContextPath()方法来获取。
<a href="/testServlet">To B Page</a>--> <a href="<%= request.getContextPath()%>/testServlet">To B Page</a>
response.sendRedirect(request.getContextPath()) + "/path/c.jsp");
3.javaWEB 中/代表什么
1》 当前WEB应用的更目录:http://localhost:8080/contextPath/ :若/需交由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>
》各种定制标签的/
2》当前站点的根目录:http://localhost:8080/:若交由浏览器来处理
》超链接:<a href="c.jsp">To C Page</a>
》表达中action:<form action="setcookie.jsp" method = "get">
》做请求重定向的时候:respose.sendRedirect("/a.jsp")