概念:
相对路径:user.login.do
绝对路径:/user.login.do
web.xml文件中的url-pattern只能绝对路径,即/user.login.do,根地址为应用目录,即/webApp。 假设web服务器配置的虚拟路径为:<Context path="/webApp" docBase="F:\xxx\war" reloadable="true" /> (tomcat)
一.servlet重定向 HttpServletResponse.sendRedirect(String) 参数可以指定为相对路径、绝对路径或其它WebURL。 1.相对路径:容器相对于原来请求URL的目录加参数建立完整的URL response.sendRedirect("user.login.do");生成的URL=http://localhost:8080/webApp/user.login.do。
2.绝对路径:容器相对于Web应用本身加参数建立完整的URL response.sendRedirect("/user.login.do");生成的URL=http://localhost:8080/user.login.do。
3.其它WebURL:response.sendRedirect(“http://localhost:8080/webApp/user.login.do")。容器直接定向到该URL。 二.servlet跳转
HttpServletRequest.getRequestDispatcher(String) 参数可以指定为相对路径或绝对路径。 1.相对路径:下生成的完整URL与sendRedirect方法相同, request.getRequestDispatcher(“user.login.do”)生成的URL=http://localhost:8080/webApp/user.login.do。
2.绝对路径:与重定向不同,容器将相对于Web应用的根目录加参数生成完整的URL, request.getRequestDispatcher(“/user.login.do”)生成的URL=http://localhost:8080/webApp/user.login.do。
三.jsp请求
/ 表示根路径
jsp的根路径和servlet的根路径不一样 jsp的根路径:http:/ /localhost:8080 servlet的根路径 http:localhost:8080/webApp
所以, <form action=”" >中的路径一般写相对,即,action="user.login.do";
若action要写绝对地址,则必须从服务器根写起,因为container是从server开始分析的。例如action="/webApp/user.login.do"。
四.总结
1.重定向:相对路径自动带上web应用虚拟根目录;绝对路径不会带web应用虚拟根目录
2.跳转:相对路径和绝对路径一样,都会自动带上web应用虚拟根目录
3.jsp请求:相对路径自动带上web应用虚拟根目录;绝对路径不会带web应用虚拟根目录 |
|