转发
2016-12-25 本文已影响32人
itachi
什么是转发?
一个web组件(Servlet/jsp)将未完成的处理转交给另一个web组件继续处理,转发的各个组件共享request和response
如何转发:
1、先绑定数据
request.setAttribute(String name,Object obj);
如果name对应的值不存在,返回null
跟绑定相关的另外两个方法
Object getAttribute(String name);
void removeAttribute(String name)
2、获得转发器,转发
RequestDispatch rd=request.getRequestSuspatcher(String name);
rd。forward(request,response)
3、编程中注意的问题
转发之前,不能执行out.close() out.flush()
转发之前会将response中缓存的数据清空
转发的特点:
转发的目的地只能是同一个应用内部的某个组件
转发之后,浏览器地址栏的地址不会发生变化
转发所涉及的各个组件共享同一个request和response对象
转发和重定向的区别:
1、地址
转发的地址必须是同一个应用内部的组件,不能跨应用,不能夸服务器
重定向没有此限制
2、能否共享request
转发可以共享,重定向不可以,转发是一次请求,重定向是两次请求
request生命周期只能在一次请求内,请求结束,request消失
3、浏览器地址是否发生改变
转发不变,重定向会改变
4、转发是一件事没做完交给另外一个组件继续做
重定向是一件事做完后,做另外一件事