摘要:本文主要学习了请求转发和响应重定向,以及二者之间的区别。html
使用HttpServletRequest对象的 getRequestDispatcher(String path) 方法获取RequestDispatcher类型的转发器。浏览器
使用RequestDispatcher转发器的 forward(ServletRequest request, ServletResponse response) 方法进行转发。服务器
1 @Override 2 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 3 req.getRequestDispatcher("/test.html").forward(req, resp); 4 }
使用HttpServletResponse对象的 sendRedirect(String location) 方法进行重定向到其余资源。session
1 @Override 2 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 3 resp.sendRedirect("/HelloWorld/test.html"); 4 }
转发只发送一次请求。ide
重定向发送两次请求。学习
转发地址栏没有变化,执行刷新至关于从新发送信息到原页面。spa
重定向地址栏有变化,执行刷新将发给新页面。code
转发能够访问WEB-INF下的资源。htm
重定向不能够访问WEB-INF下的资源。对象
转发发生在服务器内部。
重定向发生在浏览器端。
转发不能跳转到本应用外的URL。
重定向能够跳转到任意URL。
经过 request.setAttribute(); 设置的属性,若是让下一个页面访问,只能经过转发。
经过 session.setAttribute(); 设置的属性,若是让下一个页面访问,转发和重定向均可以,建议使用转发。