A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        在java中实现页面跳转一般有两种方式,一种是请求转发,一种是重定向,那么这两者有什么区别呢?
一、请求转发
       请求转发一般是这样的一个过程:客户端发送请求到服务器端,服务器端经过匹配的servlet,并执行,当这个servlet执行完之后,调用getRequestDispacther()方法,把请求转发给指定的页面,整个流程都是在服务器端完成的,而且是在同一个请求里面完成的,因此servlet和页面共享的是同一个request,在servlet里面放的所有东西,在页面中都能取出来,整个过程是一个请求,一个响应。
       如果以现实生活中的例子来举例,那么以拿快递来举例是比较好的。比如,A有快递到了,但是没有时间,那么A让B帮忙取快递,但是B答应了,想去取得时候B也没有时间,就让C取,C取好快递之后,交给A。
二、重定向
       重定向一般是这样的过程:客户端发送请求到服务器端,服务器端经过匹配的servlet,并执行,前面这个步骤是和请求转发一样,处理完之后调用了sendRedirect()方法,这个方法是response的方法,所以调用这个方法会向客户端返回这个响应,客户端会再次发送一个请求,去访问指定页面,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求访问页面。
       上面过程中含有两个请求,这两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。整个里面是两个请求,两个响应。
         如果以现实生活中的例子来举例,那么还以拿快递来举例是比较好的。比如,A有快递到了,但是没有时间,那么A让B帮忙取快递,但是B没有答应,让A再找人去取,所以A再请C帮忙取,C取好快递之后,交给A。
三、区别
       通过上面上面的说明,我们可以总结以下请求转发与重定向的区别:
项目 请求转发 重定向
发送了几次请求? 1次 2次
地址栏是否改变 不变 变,显示的是第二次的地址
是否共享request 是,在request中存的数据,在页面上可以取出
可以跳转的资源 项目内部 项目内部,外部的资源都可以



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马