您的位置:首页 > 其它

servlet中的请求转发和重定向的路径问题

2017-09-22 14:01 225 查看
一、

相对路径(即在路径最前面没有/)

绝对路径(即在路径最前面有/)

二、

请求转发:

使用相对路径:(原来请求的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()中可以不写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet url