转发(Forward)和重定向(Redirect)的区别
其实关于这个问题,在我之前写过的文章中有详细讲到:JavaWeb| 深入Servlet技术(三)大家可以去看看,但是这篇文章更多的在于总结。
首先,转发是服务器行为,重定向是客户端行为。
转发(Forword) 通过RequestDispatcher对象的 foward(HttpServletRequest request, HttpServletResponse response) 方法实现的。
RequestDispatcher 可以通过HttpServletRequest 的 getRequestDispatcher() 方法获得。例如下面的代码就是跳转到 login_success.jsp 页面。
request.getRequestDispatcher("login_success.jsp").forward(request, response);
重定向(Redirect) 是利用服务器返回的状态吗来实现的。客户端浏览器请求服务器的时候,服务器会返回一个状 态码。服务器通过HttpServletRequestResponse的setStatus(int status)方法设置状态码。如果服务器返回301或者302,则浏览器会到新的网址重新请求该资源。