一、
- 相对路径(即在路径最前面没有/)
- 绝对路径(即在路径最前面有/)
二、
请求转发:
- 使用相对路径:(原来请求的URL’目录‘)+参数
- 使用绝对路径:(当前的WEB应用本身)+参数———-请求转发中WEB应用本身指发布工程名
请求重定向:
- 使用相对路径:(原来请求的URL’目录‘)+参数
- 使用绝对路径:(当前的WEB应用本身)+参数———-重定向中WEB应用本身指端口号之后(不包含发布工程名)
- 其他web应用地址:容器直接定向到该URL
三、举例
假设发起的请求为:http:localhost:8080/mvc/sys/shxt01
(mvc为发布的工程名,/sys/shxt01为@WebServlet(“”)所写的)
请求转发
使用相对路径
request.getRequestDispatcher(“WEB-INF/jsp/demo01.jsp”).forward(request, response);
则转发的地址为:http:localhost:8080/mvc/sys/WEB-INF/jsp/demo01.jsp(错误)使用绝对路径
request.getRequestDispatcher(“/WEB-INF/jsp/demo01.jsp”).forward(request, response);
则转发的地址为:http:localhost:8080/mvc/WEB-INF/jsp/demo01.jsp(正确)
请求重定向:(cy40为WebContent下与WEB-INF同级的文件夹,里面有一个demo02.jsp)
使用相对路径:
response.sendRedirect(“cy40/demo02.jsp”);
则重定向的地址为:http:localhost:8080/mvc/sys/cy40/demo02.jsp(错误)使用绝对路径
response.sendRedirect(“/cy40/demo02.jsp”);
则重定向的地址为:http:localhost:8080/cy40/demo02.jsp(错误)
所以应当为response.sendRedirect(request.getContextPath()+”/cy40/demo02.jsp”);(正确)其他web应用地址
response.sendRedirect(“http://www.baidu.com“);
五、补充
(1)请求转发也可以使用
ServletContext.getRequestDispatcher(String),不过参数只能为绝对路径
生成的URL和HttpServletRequest.getRequestDispatcher(String)相同
(2)在@WebServlet(“”)中不能不写 /
在SpringMVC中的ResultMapping()中可以不写