Servlet重定向(sendRedirect)流程简析

本文介绍了Servlet中重定向的工作流程,从用户输入URL到浏览器显示新页面,详细讲解了每个步骤,包括响应状态码302和Location首部的作用。同时强调了sendRedirect的使用注意事项,如不能在响应提交后调用,以及必须在处理请求或重定向之间做出选择。
摘要由CSDN通过智能技术生成

    我们知道,当一个请求到达Servlet时,如果你不想处理该请求,你可以将请求分派(转发)给Web引用中的另一个组件(Servlet或Jsp等)来处理(即转发),又或者可以把请求重定向到另一个完全不同的URL来处理(即重定向)。注意,请求分派发生在服务器端,由服务器完成,而重定向发生在客户端,由客户(浏览器)完成。关于两者的详细区别,可以参考:《Servlet中请求转发和重定向的原理及区别》

 

下面主要介绍下重定向到底是怎么个过程?

 

1、客户在浏览器地址栏键入了一个(访问Servlet的)URL,并按下回车键。

 

2、请求到达Web服务器(及Web容器)。

 

3、Web容器找到指定的Servlet。

 

4、Servlet不想(或不该)它处理这个请求,而觉得应当将这个请求重定向到另外一个不同的URL处理。

 

5、于是Servlet调用sendRedirect("另一个URL"),重定向到另一个URL。

 

6、Servlet向Web容器(然后返回给Web容器)返回一个带有重定向信息的响应,Web服务器将响应返回给浏览器。该响应主要包含以下两个重要的信息:

 

    1)响应状态码为“302“,意思是请求的资源已经永久(或暂时)移动到了新的位置。

    2)一个Location首部,值是一个新的URL(Servlet重定向的)。

 

7、浏览器收到了响应,但发现这个响应的状态码是“302”,它就知道这是个重定向的响应,然后它就会寻找“Location”首部信息。

 

8、浏览器得到“Location”首部的值后,就会使用该URL建立一个新的请求并发给服务器(此时可以发现浏览器的地址栏URL已经变成了新的URL)。

 

9、服务器根据所请求URL找到相应的资源并返回给浏览器。

 

10、浏览器显示重定向后的新页面(用户可能会奇怪,怎么跳到这里了?)。

 

补充说明(注意点):

 

    1)不能在响应提交之后(已经向流中写了东西)再调用sendRedirect(),否则你将会得到一个IllegalStateException异常。

    2)在你的Servlet中,你必须要做个决定:要么自己处理请求,要不使用SendRedirect()让别人来处理。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值