Servlet-JSP之转发与重定向

一、请求转发

1. 什么是转发?

一个Web组件(Servlet/JSP)将未完成的处理交给另一个Web组件继续处理。

注:转发的各个组件会共享request和response对象。

2. 如何转发?

step1: 绑定数据到request对象中。代码如下:
request.setAttribute(String name, Object obj);//绑定数据与其相关的两个方法:
1. request.getAttribute(String name);//获取绑定的数据
2. request.removeAttribute(String name);//移除request对象中绑定的数据
step2: 获取转发器、转发
1. RequestDispatcher rd = request.getRequestDispatcher(String url);//获取转发器
2. rd.forward(request,response);//转发

3. 转发是需要注意的问题

  1. 转发之前不能够执行out.close()获取out.flush();
  2. 转发之前会将response对象中的缓存数据清空。

4. 转发的特点

  1. 只有一次请求。
  2. 转发之后浏览器的地址栏没有变化。
  3. 转发所涉及的各个组件可以共享同一个request和response对象。
  4. 转发的目的地只能是同一应用内部的某个组件(项目内部资源)。

二、重定向

1. 什么是重定向?

浏览器向服务器发送请求后,服务器会向浏览器发送一个状态码(302)和一个消息头(location),浏览器收到后会立即向location指向的地址发送请求。

注:重定向时会发生多次请求,不能共享request和response队象。

2. 如何实现重定向?

response.sendRedirect(String url);//参数url是重定向的地址

3. 重定向的特点

  1. 发送多次请求。
  2. 重定向后浏览器的地址栏发生变化。
  3. 重定向所涉及的各个组件都有独有的request和response对象,不能共享。
  4. 重定向的地址不局限于项目内部,可以是任意应用的访问地址。

三、总结(转发与重定向的区别)

  1. 请求次数不同。
  2. 浏览器的地址栏是否发生变化。
  3. 能否共享request和response对象。
  4. 转发和重定向地址的局限性。
  5. 事件是否处理完毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值