转发:首先地址URL不会改变..其次转发forward需要传两个参数request和response 可以在转发后的页面通过request.getParameter()取值...
重定向:重定向的URL地址会改变成重定向后的页面的URL,并且没有参数传递。不能通过request.getParameter()取值....只能通过seesion,application等来取值...
转发与重定向的区别,这在求职中是一个经常被问到的问题。所谓转发,实际上是指下面这条语句:
request.getRequestDispatcher("某地址").forward(request, response);
它能将请求由一个Servlet转到另外一个Servlet,或者在JSP页面之间转向。另一种用得比较多的是重定向,它的代码如下:
response.sendRedirect("某地址");
从本质上来说,它们的区别在于是否生成响应。上面那句话在执行时,实际上是生成了一个临时响应,这个响应是一个用户无法看到的响应,状态码是300。浏览器在接收到这个响应后,不显示任何东西,而再次发出一个请求到重定向的响应所指定的地址上。因此,用户最后看到的最后结果并不是第一次请求过的地址,而是重定向后的地址产生的结果。而请求的转发则不同,它是将请求交给另外一个Servlet来处理,然后处理好的结果还是由原来的Servlet返回。
在讲到这里时,我经常举的一个例子是买白菜的例子。
我是一个程序员,但是你不知道,以为我是卖白菜的,来找我买白菜。那么,我有两种选择,一是我去菜市场找个卖白菜,一毛钱买进来,然后再两毛钱卖给你。在这个过程中,你自始至终都是跟我一个人打交道,你并不知道菜农的存在;二是我直接告诉你,你找错人了,你应该去找菜农,然后你找到菜农,也买到了白菜。
在这个例子中,前者就是请求的转发,后者就是响应的重定向。前者是一个请求“买菜”,一个响应“菜给你”,但菜怎么来的你不用管。后者是两次请求,两次响应。先请求一次,然后响应告诉你找错了人,接下来再请求正确的人,最后直接拿到结果。
总结一下,它们的区别有三点:
1、是否生成响应;
2、地址栏是否发生变化;
3、是否在同一个请求作用域中
分享到:
相关推荐
描述转发与重定向的区别,讲的比较详细,希望大家喜欢.
请求转发与重定向
尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有着很大的区别。下面是HttpServletResponse.sendRedirect方法实现的...
转发和重定向的区别 forward和redirect的区别 request.getRequestDispatcher()..forward(request,response);和 response.sendRedirect();的区别详解
请求转发与重定向的区别,和对学习法的小建议,
重定向与转发的区别,地址的变化区别,对组件的处理。
请求转发和重定向的区别共1页.pdf.zip
servlet请求转发、请求重定向、请求包含 获取form数据
转发与重定向的执行过程,及其异同;以及在使用时,如何确定选择使用转发,还是重定向
主要介绍了java 转发和重定向区别及实例代码的相关资料,需要的朋友可以参考下
forward与redirect!转发和重定向 解析
javaServlet请求转发和重定向.pdf
SpringMVC第6讲:请求转发和重定向
USerLogin servlet 登录实例探究转发与重定向本质区别
javaweb请求转发的简单实例,演示了forward()方法和getRequestDispatcher()的不同之处
元素可以用来转发控制,而Response对象 的sendRedicreat()方法用来重定向请求