forward/redirect重定向

想要从一个Servlet转向另外一个Servlet,可以使用两种方法进行重定向:
forward(或称dispatch) - 服务器端重定向
redirect – 客户端重定向
forward
服务器端从一个Servlet转向另外一个Servlet,在一个Servlet中可以通过setAttribute往request中传递一些值
在另外一个Servlet中,可以通过getAttribute从request中取值
在两个Servlet中访问到的request的数据是一样的(同一个request)
redirect
服务器实际上已经向客户端产生了响应(302号响应)
客户端(即浏览器)根据响应的HTTP HEAD中包含的redirect地址,向服务器重新发起一个请求(用GET方式)
后面这个请求与一开始那个请求不是同一个请求,所以,在前一个请求中调用setAttribute放进去的数据已经丢失!


浏览器发起请求->服务器响应->浏览器解释响应,可以称为一个请求周期!
forward
浏览器请求Servlet1 -> Servlet1 forward到 Servlet2 ->Servlet2 forward到Servlet3 -> Servlet3响应,浏览器解释响应。这是一个请求周期 ,在这个请求周期中,request中的数据不会丢失!
redirect
浏览器请求Servlet1 -> Servlet1 redirect到Servlet2(实际过程是:Servlet1向浏览器响应 ->浏览器根据响应自动的再次向服务器发起请求到Servlet2 ->Servlet2向浏览器响应->浏览器解释响应)。所以,这是两个请求周期 。这意味着,在服务器端,是两个完全不同的request,所以request中的数据自然也就丢失了!

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值