重定向和转发
重定向
1、什么是重定向?
在服务器为浏览器提供响应时,回传的数据包中的状态行里面是302状态码,同时在消息头内会增加一个键值对,名称为Location,值是一个新的URL地址。当这个响应到达浏览器的时候,这一次的请求响应过程并未结束,浏览器遇见302状态码之后,会立即按照Location头信息中指定的URL地址发送新的一个请求,这样一个在接到响应后又立即发出请求的过程叫做重定向。对于客户端用户来讲,中间的变化过程不会被察觉,因为这个过程是由浏览器自动完成的。
2、重定向的特点
重定向地址任意
重定向之后浏览器的地址会发生变化
重定向之前,容器会清空response对象上存放的所有数据。也就是说实体内容内是没有任何数据的。
3、如何实现 重定向?
response.sendRedirect(String url),resoponse调用是因为发回的响应信息是由response对象控制
转发
1、什么是转发?
在Web服务器端处理用户请求的时候,会有需要多个Web组件配合才能完成的情况。一个Web组件(Servlet/JSP)将未完成的处理通过容器转交给另外一个Web组件继续完成,这个转交的过程叫做转发。
request.setAttribute(String name,Object obj);
共享request和response:转发可以,重定向不行。因为请求和响应对象的生存时间是一次请求与响应。
目的地有无限制:转发有限制(同一个应用),重定向无限制
浏览器地址栏:转发无变化,重定向有变化。
作者:danielJinyu
本文版权归作者和博客园共有,欢迎转载,但未经作者同意请保留此段声明,请在文章页面明显位置给出原文连接
Github:https://github.com/DanielJinyu