Servlet 重定向原理
来源:互联网 发布:淘宝唱片店正版 编辑:程序博客网 时间:2024/05/22 04:48
重定向(sendRedirect)的工作原理:
客户发送一个请求到服务器,服务器匹配servlet,这都和请求转发一样,servlet处理完之后调用了sendRedirect()这个方法,这个方法是response的方法,所以,当这个servlet处理完之后,看到response.senRedirect()方法,立即向客户端返回这个响应,响应行告诉客户端你必须要再发送一个请求,去访问test.jsp,紧接着客户端受到这个请求后,立刻发出一个新的请求,去请求test.jsp,这里两个请求互不干扰,相互独立,在前面request里面setAttribute()的任何东西,在后面的request里面都获得不了。可见,在sendRedirect()里面是两个请求,两个响应。
Servlet重定向一般采用response.sendRedirect()来处理,要明白其中的细节,还需了解HTTP协议的一些内容,简单点就是要了解HTTP请求报头、HTTP状态码、HTTP响应报头的一些参数。
sendRedirect()简单点就是做了两件事情:
设置HTTP响应报头中的Status为302;
设置HTTP响应报头中的Location值为指定的URL;
简单相当于这样:
- response.setStatus(302);
- response.setHeader(”Location”,“OtherServlet”);
浏览器会根据状态码来作出相应的响应;
浏览器对相应的状态码的响应(这里只给出了几个3开头的)是:
302 作为HTTP1.0的标准,以前叫做Moved Temporarily ,现在叫Found. 现在使用只是为了兼容性的处理,response.sendRedirect()的默认Location重定向用的是302.
但是HTTP 1.1 有303 和307作为详细的补充,其实是对302的细化
303:对于POST请求,它表示请求已经被处理,客户端可以接着使用GET方法去请求Location里的URI。
307:对于POST请求,表示请求还没有被处理,客户端应该向Location里的URI重新发起POST请求。
浏览器对302的响应,默认情况下,使用HTTP协议的GET方法提交请求,最初请求的内容(比如 POST 参数)也就丢失了。
所以response.sendRedirect()是不能让浏览器来以post方法提交请求的
- Servlet 重定向原理
- Servlet 重定向原理
- 网络编程---重定向和转发底层原理以及Servlet
- SERVLET中的重定向
- Servlet 重定向问题
- servlet重定向
- servlet重定向
- servlet重定向问题
- servlet重定向
- 在servlet重定向
- Servlet中的重定向
- Servlet重定向
- servlet备忘[重定向]
- Servlet-重定向
- Servlet 网页重定向
- Servlet请求重定向
- Servlet 网页重定向
- ICMP重定向原理
- 转载:NTFS交换数据流实验(晴刃原创)
- connect成功之后,accept返回之前,客户端和服务器的链接是否已建立
- Servlet Response对象
- ds1302简单解析
- Android 自定义控件实现弹性旋转的圆形菜单
- Servlet 重定向原理
- 数据结构——字符串处理
- Servlet中文乱码问题
- 处理大并发之四 使用libevent利器bufferevent
- linux 的shell 和 makefile 2017-2-22
- SpringMVC @RequestBody接收Json对象字符串
- Android 代码混淆异常 transformClassesAndResourcesWithProguardForRelease FAILED
- Java Cache系列之Guava Cache
- leetcode 144. Binary Tree Preorder Traversal