重定向与转发

什么是重定向?
服务器向浏览器发送一个状态码302及一个消息头location,浏览器收到后,会立即向 location所指向的地址发送请求。

2) 如何重定向
response.sendRedirect(String url);
其中,url是重定向的地址。

3) 编程要注意的问题

重定向之前,不能够有out.close()或者out.flush()操作。
重定向之前,如果response对象缓存有数据,则这些数据会被清空(注意数据丢失)。

4) 重定向的特点

重定向的地址是任意的
重定向之后,浏览器地址栏的地址变成了location所指定的地址。
·

如何转发?

step1 //先绑订数据 request.setAttribute(String name,Object obj);
跟绑订相关的另外两个方法
//如果name对应的值不存在,返回null。
//获得指定的绑定数据 Object request.getAttribute(String name);
//移除指定的绑定数据 request.removeAttribute(String name);


step2 获得转发器,转发
RequestDispatcher rd = request.getRequestDispatcher(String uri);
rd.forward(request,response);
或者 request.getRequestDispatcher(String uri).rd.forward(request,response);

3) 编程中要注意的问题
转发之前,不能够执行out.close或者out.flush。转发之前,会将response中缓存的数据先清空。

4) 转发的特点
a. 转发的目的地只能是同一个应用(工程)内部的某个组件
b. 转发之后,浏览器地址栏的地址没有变化
c. 转发所涉及的各个组件可以共享同一个request,response对象

重定向与转发的区别
1)地址
a.转发的地址必须是同一个应用内部的某个组件(不能跨应用,不能跨服务器)
比如:
地址1 http://localhost:8080/web06/aaa.jsp
地址2 http://localhost:8080/web06/bbb.jsp
地址3 http://localhost:8080/web07/ccc.jsp
地址4 http://www.ddd.net
在应用web06内部的组件aaa.jsp可以将信息转发到地址2(同一应用),但是不可以 转发到地址3(跨应用)和地址4(跨服务器)

b.重定向的地址没有限制


2) 能否共享request
转发可以
重定向不行
原因是转发是一次请求,重定向为两次请求,Request的生命周期只能在一次请求内,请求结束,Request 被删除

3)浏览器地址栏的地址是否变化
转发不变
重定向会变

4) 事件是否处理完毕
转发是一件事未做完
重定向是一件事已经做完



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值