Forward和Redirect的区别

	在开发JavaWeb项目中,我们经常会用到转发网页,使我们从一个网页转入另一个网页,而转发分为两种:直接转发以及间接转发。
	而Forward以及Redirect分别就代表了这两种不同的请求转发方式。而这两种转发方式有什么区别呢?
	所谓直接转发方式,就是客户端和浏览器只发出一次请求,Servlet、HTML、JSP或其它信息资源,由第二个信息资源响应该请求,在请求对象request中,保存的对象对于每个信息资源是共享的。
	而所谓的间接转发方式,就是是两次HTTP请求,服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。

	forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址。
	redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
	从数据共享的方面来说,如果采用直接转发方式,可以共享request里面的数据,而如果使用间接转发方式,则不会共享request里面的数据,这也是两者最为关键的区别。

	转发的过程:客户浏览器发送http请求,之后web服务器接受此请求,随后调用内部的一个方法在容器内部完成请求处理和转发动作,最后将目标资源发送给客户,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。
	重定向过程:客户浏览器发送http请求,web服务器接受后发送302状态码响应及对应新的location给客户浏览器-,随后客户浏览器发现 是302响应,则自动再发送一个新的http请求,请求url是新的location地址,最终服务器根据此请求寻找资源并发送给客户。在这里 location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的 路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

直接转发:

<body>  
        <jsp:forward page="index.htm"/>     
    </body>
`
重定向:

//Servlet中处理get请求的方法
public void doGet(HttpServletRequest request,HttpServletResponse response){
//请求重定向到另外的资源
response.sendRedirect(“资源的URL”);
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值