重定向和转发
Posted 奋斗的渣渣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重定向和转发相关的知识,希望对你有一定的参考价值。
重定向: 服务器发送一个302状态码及一个Location消息头(值是一个地址,称为重定向地址);通知浏览器立即向重定向地址发送请求
用法:response.sendRedirect(String url)
注意: 1重定向之前不要调用 out.close()会报错
2 重定向之前服务器会清空response 对象上缓存的数据,servlet只允许同时发送一个响应
特点: 1 重定向的地址是任意的(提前是要存在否则报404)
2 重定向之后浏览器的地址会变成重定向地址
原理图
转发:一个web组件(servlet/jsp)将未完成的处理 通过容器转交给另外一个web组件继续完成 通常的情况是 servlet 将数据处理之后转交给jsp 去展示
如果转发 : 1.绑定数据到request request里有一个hashMap resquest.setAttribute(String name,Object obj); name 绑定名 obj 绑定值
2.获得一个转发器: url 要转发给哪一个web组件
RequstDispatcher rd= request.getRequestDispathcher(String url);
3.转发
rd.forward(request,response);jsp和servlet会共享相同的请求和对象
4,在转发的目的地,可以使用request.getAttribute 方法获取 绑定的数据,然后进行处理。
1转发之前不要调用 out.close()或者out.flush()会报错
2 转发之前服务器会清空response 对象上缓存的数据,servlet只允许同时发送一个响应
转发原理图
转发的特点
1.转发的目的地只能是同一个应用内部的某个组件地址
2.转发之后浏览器的地址栏不会变化
3.转发所涉及的各个web组件之间可以共享同一个request和response对象
转发与重定向的区别
1.转发的目的地址是同一个应用内部的某个组件的地址,而重定向的地址是任意的。
2.转发之后浏览器的地址不变,而重定向会变。
3.转发之后的各个web组件之间可以共享request对象。重定向不可以。
4.转发是一件事没有完成,而重定向是一件事件已经做完。
以上是关于重定向和转发的主要内容,如果未能解决你的问题,请参考以下文章