客户端和服务器端跳转

  
  • forward是服务器内部转发
标准流程如下:
 
  1.客户端浏览器发送HTTP request到服务器
   2.服务器在接收到客户端request之后,分别创建出HttpServletRequest对象和HttpServletResponse对象,然后调用所请求的servlet的service方法,同时将HttpServletRequest对象和HttpServletResponse对象传递过去.
   3.当servlet,调用forward方法时,服务器根据forward转发的url找到对应的servlet,(如果forwardjsp,则调用的是web container为jsp生成的java bean)
    服务器转发全程是没有客户端参与的,都在webcontainer容器内部进行,没有任何服务器和客户端的通信,实际就是服务器内部的跳转
   4.注意这里,与1.的调用servlet不同:
    这次forward,服务器没有构建HttpServletRequest对象和HttpServletResponse对象
    而是将原来的HttpServletRequest对象和HttpServletResponse对象传递给jsp过去


  •  sendRedirect是客户端转发
 1.当sendRedirect方法被执行,同时也意味着一次httprequest请求的结束
   此时,服务器会客户端发送302状态码新的url,告诉客户端重新发送request请求到新的url
HTTP/1.1 302Found
Location: http://localhost:9080/AppIndex.jsp
Content-Language: zh-CN
Content-Length: 0
Set-Cookie: JSESSIONID=00003FhtMbQNx1naY0MZ05XJeMz:-1; Path=/
Date: Wed, 29 Aug 2007 16:37:31 GMT
Server: WebSphere Application Server/6.1
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Cache-Control: no-cache="set-cookie, set-cookie2"

 2.当客户端根据302状态码发送新的请求到到新的url的时候,新的请求-响应流程重新开始
 4.这时候服务器重新创建HttpServletRequest对象和HttpServletResponse对象
 5.此时两个请求已经不在一个线程了,更不用说request和response对象了
所以此时在如果想把数据传递到新的servlet或新的jsp的request内,那么只能使用url?值/对的方式

网址参考:http://blog.youkuaiyun.com/u012124564/article/details/47355409
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值