Servlet 请求转发与重定向

请求转发

在一个浏览器发送请求时,需要多个web资源上传才能有响应结果,但因为servlet对象无法调用其他的servlet,就像是有两个servlet对象,客户端请求到servlet1后,servlet1又转发到servlet2,最后由servlet2为客户端做出响应,请求转发属于服务器行为。

方法:

返回方法名说明
voidforward(ServletRequest request,ServletResponse response)将请求转发给另一个servlet(也就是web资源),该方法必须在响应提交给客户端之前被调用,不然抛出IllegalStateException异常
voidinclude(ServletRequest request,ServletResponse response)将其他servlet的响应消息与当前响应消息包含在一起

forward()与include()区别:

  • forward()是将请求转发到另一个servlet中,

    例如servlet1请求响应返回hello,servlet2请求响应返回java,最终返回的是Java。

  • include()是将servlet1与servlet2请求响应包含一起返回。

重定向

重定向与请求转发都是用来实现URL指向,重定向是指客户端请求后,servlet会重新给你一个URL地址,让你去找这个URL地址的servlet,最后通过这个URL地址返回响应信息。

重定向的方法:

返回类型方法名说明
voidsendRedirect(String location)返回一个302的状态码和一个新的URL地址,如果返回的是servlet当前下的相对路径,servlet会自动转换成绝对路径

请求响应与重定向的区别

  1. 请求次数不同,请求转发只请求一次,重定向要请求两次。
  2. 行为:请求转发属于服务器行为,重定向属于客户端行为。
  3. 请求速度:请求转发要快,重定向要慢慢。
  4. URL地址:请求转发后地址不变,重定向后地址要变。
  5. 范围:请求转发只能在web项目中进行,重定向可以在web项目内也可以在其他任何地方。
  6. request 对象和 response 对象是否可以共享,请求转发可以实现共享,重定向不能实现共享。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值