日期:2014-05-18  浏览次数:20753 次

请问requet.sendRedirect()和RequestDispatcher.forward()有什么区别
好象都是跳转到某个页面啊?

请大家帮忙     谢谢

------解决方案--------------------
sendRedirect()地址栏看得出来跳到哪里去了,而RequestDispatcher.forward()是看不出来的还是原来的页面,你试一下就知道了
------解决方案--------------------
HttpServletResponse.sendRedirect()方法将响应定向到参数location指定的、新的URL。location可以是一个绝对的URL,如response.sendRedirect( "http://java.sun.com ")也可以使用相对的URL。如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。这种重定向的方法,将导致客户端浏览器的请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP响应头信息的实现。


RequestDispatcher.forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。这样看起来类似于Servlet链的功能,但是还有一些区别。一个RequestDispatcher对象可以把请求发送到任意一个服务器资源,而不仅仅是另外一个Servlet。 include()方法将把Request Dispatcher资源的输出包含到当前输出中。


------解决方案--------------------
mark
------解决方案--------------------
redirect请求是浏览器到服务器的新的请求,request、response已经改变了,同时浏览器地址栏会出现新请求的url

forward请求是将请求在服务器内部转向,request、response没有改变,当然浏览器地址栏仍然是以前的url

------解决方案--------------------
zjf405(阿飞)(搞IT有前途吗)

同意
------解决方案--------------------
支持ls的ls