Forward和Redirect的区别

转发

用户向服务器发送一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect)。

直接转发(Forward)

客户端和浏览器只发出一次请求。

直接转发是在服务器端工作的。

客户端向服务器的Servlet1发出请求,Servlet1处理不了,把这个请求转移给Servlet2处理,这个请求对象封装了一开始客户端发送请求时封装的信息,参数等(也就是把原来的request转发,而不是新建);Servlet2通过这个请求对象进行处理,把结果通过response发回原客户端浏览器。整个过程只发生一次请求,一次响应。由于宏观上是客户端向Servlet1发出的请求,因此地址栏显示的是Servlet1的地址。

直接转发请求过程:

1.浏览器向Servlet1发出访问请求

2.Servlet1调用forward(),在服务器端将请求转发给Servlet2

3.最终由Servlet2响应。

直接转发相当于:“A找B借钱,B没有,B找C借钱,最后再将结果传递给A”

 

请求转发资源二可以是WEB-INF中的资源

 

间接请求转发(Redirect)

间接转发方式也叫重定向,一般用于避免用户的非正常访问。例如:用户在未登录的情况下访问后台资源,Servlet可以将HTTP请求重定向到登录页面。

重定向实际上是指引浏览器指向另一个页面进行请求。地址栏上面显示的是最后响应的地址。间接跳转之后是新建一个新的request,因此不能获得之前request的对象,而直接跳转可以。

间接转发是在浏览器端工作的

间接转发流程:

1.浏览器向Servlet1发出请求

2.Servlet1调用sendRedirect(),将浏览器重定向到Servlet2

3.浏览器向Servlet2发出请求

4.最终由Servlet2做出响应

间接转发请求相当于:“A找B借钱,B没有,B让A去找C借钱”

重定向资源二不可以是WEB-INF中的资源

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值