请求转发与重定向的区别

请求转发与重定向的区别

ID:34498367

大小:36.93 KB

页数:5页

时间:2019-03-07

请求转发与重定向的区别_第1页
请求转发与重定向的区别_第2页
请求转发与重定向的区别_第3页
请求转发与重定向的区别_第4页
请求转发与重定向的区别_第5页
资源描述:

《请求转发与重定向的区别》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、请求转发(Forward)和重定向(Redirect)之间区别与联系一个比喻: 小张向小李发送一次请求,想让他完成某项工作,当小李接受到请求时,发现自己完成不了,又请求小王帮忙,小王接收到小李请求之后最终完成了该项工作,并把最后的结果交给了小张。这个过程就是请求转发,在此期间,小张只发送了一次请求,他只知道把任务交给了小李,至于小李是如何完成的,小张并不知道,他只等待最终的结果。 重定向则不同,首先小张向小李发送请求,想让他完成某项工作,当小李接收到这个请求时,发现自己完成不了,他立即通知小张,并推荐小王可以完成任务,于是小张又联系小王,最终小王完成了该项任务。 区别: 1、

2、浏览器地址栏显示不同(表面区别) 无论进行多少次请求,如果使用请求转发来实现,浏览器地址栏中只显示第一次发送请求的地址;如果使用重定向来实现,浏览器地址栏显示的是每次请求的新地址。这只是表面上看到的不同地方。 2、组件之间可否共享信息不同(本质区别) 从本质上讲,请求转发时,从发送第一次到最后一次请求的过程中,WEB容器只创建一次request和response对象,请求之间始终共享这两个对象,所以每个请求可以访问他之前请求中的参数和属性的值;而重定向时,浏览器每发送一次请求,WEB容器都会重新创建新的request和response对象,所以请求之间不能共享信息,即不能在请

3、求中访问到他之前请求中的参数和属性的值。 3、实现方式不同 请求转发的实现步骤: ·说明将要转发的资源;·获取请求转发的对象;·调用请求转发对象中forward()方法Java代码 1.String forward = "/a.jsp";  2.RequestDispatcher rd = request.getRequestDispatcher(forward);    3.rd.forward(request, reponse);  重定向的实现步骤: ·说明将要重定向的资源;·调用response对象中sendRedirect方法Java代码 1.String reso

4、urce =  request.geContextPath() + "/a.jsp";  2.response.sendRedirect(resource);  4、知情人不同 请求转发时转发的过程只有WEB服务器知道,而浏览器不知道进行了多少次转发,以及都转发给哪些组件(servlet,JSP),它只是在等待WEB服务器最终的结果。而重定向时,每发送一次请求,WEB服务器都会通知浏览器的,所以重定向了几次请求以及每次都向哪个组件发送的请求,浏览器很清楚,当让WEB服务器也很明白。 相同点: 两者都可以进行多次请求的转发。请求转发与重定向的区别先是看上去不同,他们的调用分别如

5、下:request.getRequestDispatcher("apage.jsp").forward(request,response);//转发到apage.jspresponse.sendRedirect("apage.jsp");//重定向到apage.jsp在jsp页面中你也会看到通过下面的方式实现转发:我在初学jsp的时候,对这两个概念非常模糊,看别人的例子的时候,也是一头雾水,不知道什么时候该用哪个。希望下面的解说能对你有所帮助。提到转发和重定向就不得不提到request作用域。很多初学者都知道当我们提

6、交一个表单时,就创建了一个新的请求。实际上,当我们点击一个链接时,也创建了一个新的请求。那么一个请求的作用于到底有多大呢?例如:在页面a.jsp中有一个链接这是指向b的一个链接,而且还带了一个参数当我们点击这个连接的时候,就产生了一个请求,为了明确起见,我们把它叫做requestA->B。现在,在b.jsp页面中我们就可以从这个请求中获取信息了。在b.jsp中你可以写入out.println(request.getParameter("id"))进行测试。下面更复杂一点,我们在b.jsp页面中增加下面的语句:request.se

7、tAttribute("name","funcreal");out.println(request.getAttriblute("name"));//成功显示了name变量的值。现在在b.jsp中再增加一个链接:这是指向c的一个链接,而且还带了一个参数当我们点击这个连接的时候,将产生一个新的请求,这时requestA-B也就安息了,新的请求叫做requestB-C。同样的道理,在c.jsp中,我们可以访问到的变量只有age,因为id,name这两个变量

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。