请求转发与重定向的比较 :
目录:
- 关于客户端向服务器发送一个请求,请求地址发生了变化
- 如果要跳转的页面想要获取request.setAttribute
- 关于访问外网
- 如果想要访问的页面在WEB-INF中
首先创建一个DataServlet,只留下get方法。再创建一个index.jsp
1.关于客户端向服务器发送一个请求,请求地址发生了变化
请求转发
这时你的浏览器页面会出现
访问路径是不会改变的!
重定向
这时你在浏览器访问 127.0.0.1:8080/jsp/DataServlet 会出现这样的结果
访问的路径会自动改变,但是访问页面没有值,为什么没有值呢?请看下边内容。
2.如果要跳转的页面想要获取request.setAttribute
正如上面演示,重定向无法再新的页面获取request.setAttribute中保存的数据,请求转发可以。
3.关于访问外网
请求转发 不可以访问
request.getRequestDispatcher("https://www.baidu.com").forward(request, response);
这是会访问失败的,但是重定向可以
重定向
response.sendRedirect("https://www.baidu.com");
4.如果想要访问的页面在WEB-INF中
请求转发的方式可以获取
我们现在把index.jsp放入WEB-INF中
request.getRequestDispatcher("WEB-INF/index.jsp").forward(request, response);
还是可以访问到的,但是用重定向的方式就不行
重定向
response.sendRedirect("WEB-INF/index.jsp");