转发(Forward)和重定向(Redirect)的区别

发布时间:2026/7/28 17:57:55
转发(Forward)和重定向(Redirect)的区别 转发是服务器行为重定向是客户端行为。转发Forward通过RequestDispatcher对象的forwardHttpServletRequest request,HttpServletResponse response方法实现的。RequestDispatcher可以通过HttpServletRequest 的getRequestDispatcher()方法获得。重定向Redirect是利用服务器返回的状态码来实现的。客户端浏览器请求服务器的时候服务器会返回一个状态码。服务器通过HttpServletResponse的setStatus(int status)方法设置状态码。如果服务器返回301或者302则浏览器会到新的网址重新请求该资源。request.getRequestDispatcher(new.jsp).forward(request,response);//转发到new.jspresponse.sendRedirect(new.jsp);//重定向到new.jsp在jsp页面中你也会看到通过下面的方式实现转发jsp:forward pageapage.jsp/当然也可以在jsp页面中实现重定向%response.sendRedirect(new.jsp);//重定向到new.jsp%假设你去办理某个执照 重定向你客户端先去了A局当前web路径A局的人说“这个事情不归我们管去B局另一个web路径”然后你就从A退了出来自己乘车去了B局。 转发你先去了A局A局看了以后知道这个事情其实应该B局来管但是他没有把你退回来而是让你坐一会儿自己到后面办公室联系了B的人让他们办好后送了过来。从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址. redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.从数据共享来说forward:转发页面和转发到的页面可以共享request里面的数据. redirect:不能共享数据.从运用地方来说forward:一般用于用户登陆的时候,根据角色转发到相应的模块. redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等从效率来说forward:高. redirect:低.总结篇servlet总结