- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
转发与重定向的区别.pdf
—高级软件人才实作培训专家!
转发与重定向的区别
我们知道,请求转发和请求包含都是在一个请求内,涉及到多个Servlet。既然转发和包含都在一个请
求内,那么说明多个Servlet共用同一个request对象和response对象。这个时候就存在request域。
1. request 域
Servlet的三大域对象:request,session,application。其中request域是三大域对象中范围最小的域对
象,application对象其实就是ServletContext对象,在ServletContext功能详解中我们对它的域功能做了详
细的介绍;session域会在后面学习。
request域只会在请求转发和请求包含时存在。它的域范围就是整个请求链,如图1-1所示。例如:由
AServlet请求转发到BServlet,这时在AServlet 中向request域中存放数据,然后在BServlet 中从request
域中获取数据。如果BServlet又转发给其他的Servlet,那么在其他Servlet中也可以从request域中获取数
据。转发过程中经过的这些Servlet都在一个请求链中。
图1-1 请求转发
2. request域相关方法介绍
以后只要是域对象,那么它必然会有以下三个方法:
voidsetAttribute(Stringname,Objectvalue
该方法是向域中保存域属性,例如:setAttribute(“username”,”zhangsan” ,其中,username
是域属性的名称,zhangsan是域属性的值。如果多次调用该方法,且属性名称相同,那么后保存
的数据会覆盖先保存的数据。
ObjectgetAttribute(Stringname
该方法是根据属性名称从域中获取域属性的值,如果之前没有调用setAttribute( 方法保存
数据,那么调用getAttribute( 方法返回值是null。
voidremoveAttribute(Stringname
—高级软件人才实作培训专家!
该方法是从域中移出指定名称的域属性,如果该名字的域属性不存在,则该方法什么都不
做。
3. 域属性和请求参数的区别
很多人在学习域属性的时候会将域属性和请求参数弄混淆,认为域属性就是请求参数。其实这个认知
是错误的。下面我们来看域属性和请求参数有哪些区别:
(1 来源不同
请求参数是由客户端发送给服务器的,而域属性是在服务器内部,在Servlet中向域中添加的;
(2 相关方法不同
请求参数只能获取,不能修改、删除和添加,而域属性在获取的基础上还可以添加和删除。
为了让大家更加直观的区分它们,下面我们来看一张图,图1-2:
图1-2 请求参数和域属性的区别
由图1-2可知,域属性是请求转发或请求包含时,在Servlet之间传递的数据。
4. 请求转发和重定向的区别
在学习重定向时,我们已经了解了重定向的一些特点,现在根据请求转发的特性,我们将请求转发和
重定向做了以下比较:
(1请求转发是一次请求一次响应,而重定向是两次请求两次响应;
(2请求转发地址栏不会改变,而重定向地址栏会显示第二次请求的地址;
(3请求转发只能转发给本项目的其他资源,而重定向不仅可以重定向到本项目的其他资源,还可以重
定向到其他项目;
(4 请求转发是服务器端的行为,转发时只需要给出转发的资源路径即可,如Servlet的访问路径;而
重定向需要给出全路径,即路径要包含项目名;
(5请求转发比重定向的效率高,因为请求转发是一个请求。
在以后的开发中,如果需要地址栏的地址发生改变,就选择重定向;如果需要在Servlet之间通过request
域进行数据通信,就选择请求转发。
—高级软件人才实作培训专家!
下面通过一个案例来了解request域属性的设置和获取,如下所示:
(1创建web应
文档评论(0)