Servlet总结(2)——转发与重定向

1.重定向

1.1什么是重定向?

服务器通知浏览器重新访问一个新的地址。
服务器可以发送一个302状态码及一个Location消息头(该消息头的值是一个地址,一般称之为重定向地址)给浏览器;浏览器收到之后,会立即向重定向地址发请求。

例如添加完用户后重定向到用户列表

1.2如何重定向?

response.sendRedirect(String url); url为重定向地址。

1.3特点

a.重定向地址是任意的。
b.重定向之后,浏览器地址栏的地址会发生变化。

注:重定向之前,容器会先清空response对象上存放的所有数据。

2.转发

2.1什么是转发?

一个web组件将未完成的处理交给另外一个web组件继续做。
 a. web组件指的是jsp或者servlet。
 b. 常见的场景是一个servlet获取处理结果之后,转交给一个jsp来展现。

2.2如何转发?

2.2.1)绑订数据到request对象上。

request.setAttribute(String name,Object obj);
注:
    name一般称之为绑定名,
    obj一般称之为绑定值。
    Object request.getAttribute(String name);

2.2.2)获得转发器。

RequestDispatcher rd =  request.getRequestDispatcher(String uri);
注:
    a. RequestDispatcher是一个接口,该方法会返回一个符合该接口要求的对象,我们一般称之为转发器。
    b. uri是转发的目的地,比如一个jsp的地址。
    c. 转发的本质是一个web组件通过转发器,通知容器去调用另外一个web组件。

2.2.3)转发

rd.forward(request,response)

2.3特点

2.3.1)转发之后,浏览器地址栏的地址不变。
2.3.2)转发的目的地地址是有限制的,要求是一个应用中的某个web组件的地址。

3.比较转发与重定向

3.1 能否共享request对象

转发可以,而重定向不行。
    a.当请求到达容器时,容器会立即创建request和response,当响应发送完毕,容器会立即销毁这两个对象。也就是说,request和response的生存时间是一次请求与响应期间存在
    b.转发是一次请求,重定向是两次请求。

3.2浏览器地址栏的地址有无变化

转发无变化,而重定向有变化。

3.3目的地有无限制

转发有限制(同一个应用),而重定向没有任何限制。

注:写绝对路径时,链接、表单提交、重定向从应用名开始写,转发从应用名之后开始写。

       不要将应用名直接写在路径里面。而应该使用String request.getContextPath();方法获得实际部署时的应用名:
   

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值