forward/redirect重定向
想要从一个Servlet转向另外一个Servlet,可以使用两种方法进行重定向:
forward(或称dispatch)-服务器端重定向
redirect–客户端重定向
forward
服务器端从一个Servlet转向另外一个Servlet,在一个Servlet中可以通过setAttribute往request中传递一些值
在另外一个Servlet中,可以通过getAttribute从request中取值
在两个Servlet中访问到的request的数据是一样的(同一个request)
redirect
服务器实际上已经向客户端产生了响应(302号响应)
客户端(即浏览器)根据响应的HTTPHEAD中包含的redirect地址,向服务器重新发起一个请求(用GET方式)
后面这个请求与一开始那个请求不是同一个请求,所以,在前一个请求中调用setAttribute放进去的数据已经丢失!浏览器发起请求->服务器响应->浏览器解释响应,可以称为一个请求周期!
forward
浏览器请求Servlet1->Servlet1forward到Servlet2->Servlet2forward到Servlet3->Servlet3响应,浏览器解释响应。这是一个请求周期,在这个请求周期中,request中的数据不会丢失!
redirect
浏览器请求Servlet1 -> Servlet1 redirect到Servlet2(实际过程是:Servlet1向浏览器响应 ->浏览器根据响应自动的再次向服务器发起请求到Servlet2 ->Servlet2向浏览器响应->浏览器解释响应)。所以,这是两个请求周期。这意味着,在服务器端,是两个完全不同的request,所以request中的数据自然也就丢失了!相关推荐
朱培知浅ZLH 2020-11-16
Junzizhiai 2020-10-10
zhangbingb 2020-09-21
ROES 2020-08-17
ningningmingming 2020-07-28
Jiajinjin 2020-07-27
懒人的小窝 2020-07-04
wykpaopao 2020-06-28
lishaokang 2020-06-12
Greatemperor 2020-06-10
谢育政 2020-05-27
wanggongzhen 2020-05-26
ITlover00 2020-05-07
zhongcanw 2020-05-08
DAV数据库 2020-05-07
服务器端攻城师 2020-05-04
ningningmingming 2020-05-01
yuleng测试赛 2020-04-11
tvk 2020-04-06