我们知道,当一个请求到达Servlet时,如果你不想处理该请求,你可以将请求分派(转发)给Web引用中的另一个组件(Servlet或Jsp等)来处理(即转发),又或者可以把请求重定向到另一个完全不同的URL来处理(即重定向)。注意,请求分派发生在服务器端,由服务器完成,而重定向发生在客户端,由客户(浏览器)完成。(关于两者的详细区别,可以参考:《Servlet中请求转发和重定向的原理及区别》)
下面主要介绍下重定向到底是怎么个过程?
1、客户在浏览器地址栏键入了一个(访问Servlet的)URL,并按下回车键。
2、请求到达Web服务器(及Web容器)。
3、Web容器找到指定的Servlet。
4、Servlet不想(或不该)它处理这个请求,而觉得应当将这个请求重定向到另外一个不同的URL处理。
5、于是Servlet调用sendRedirect("另一个URL"),重定向到另一个URL。
6、Servlet向Web容器(然后返回给Web容器)返回一个带有重定向信息的响应,Web服务器将响应返回给浏览器。该响应主要包含以下两个重要的信息:
1)响应状态码为“302“,意思是请求的资源已经永久(或暂时)移动到了新的位置。
2)一个Location首部,值是一个新的URL(Servlet重定向的)。
7、浏览器收到了响应,但发现这个响应的状态码是“302”,它就知道这是个重定向的响应,然后它就会寻找“Location”首部信息。
8、浏览器得到“Location”首部的值后,就会使用该URL建立一个新的请求并发给服务器(此时可以发现浏览器的地址栏URL已经变成了新的URL)。
9、服务器根据所请求URL找到相应的资源并返回给浏览器。
10、浏览器显示重定向后的新页面(用户可能会奇怪,怎么跳到这里了?)。
补充说明(注意点):
1)不能在响应提交之后(已经向流中写了东西)再调用sendRedirect(),否则你将会得到一个IllegalStateException异常。
2)在你的Servlet中,你必须要做个决定:要么自己处理请求,要不使用SendRedirect()让别人来处理。
相关推荐
Servlet跳转方式 sendReDirectServlet跳转方式 sendReDirectServlet跳转方式 sendReDirectServlet跳转方式 sendReDirectServlet跳转方式 sendReDirect
Servlet之forward、sendRedirect、 include区别与使用实例 ,具体效果和过程看博文http://blog.csdn.net/evankaka/article/details/45169569
常考面试题 1.讲下servlet的执行流程。 Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()《启动顺序根据... 重定向的url会改变,response.getRedirect().sendRedirect();
jsp response.sendRedirect不跳转的原因分析及解决.docx
9. 重定向(forward与sendRedirect)区别 6 10. JSP和Servlet的区别 7 11. Cookie学习 7 12. Session学习 9 Servlet技术总结 9 1. Servlet生命周期 9 2. Servlet的方法说明: 10 3. Servlet 在web.xml中的配置 10 ...
尽管HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器...下面是HttpServletResponse.sendRedirect方法实现的请求重定向与RequestDispatcher.forward方法实现的请求转发的总结比较
Jsp利用response.sendRedirect、cookie传参
//重定向的跳转方式为get(如果下一个servlet中没有get方法 将出现异常) 注意事项:a标签和重定向差不多 通过a标签进行跳转时也是调用doGet()方法 //从地址栏上方进入网页也是调用的servlet的get方法 //在使用doGet...
Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged. encodeUrl(String) - Method in class javax.servlet....
转的页面"> 与 response.sendredirect("转的页面")的区别 sendredirect:
sendRedirect()和forward()的区别,我是个新手,觉得很受用,呵呵,大家学习
jsp response.sendRedirect()用法详解.docx
而sendRedirect方法可以让你重定向到任何URL。 表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:8080/uu); Forward代码中的"/uu...
超全面javaweb教程28天第10天_9_response的快捷重定向方法_sendRedirect
转发和重定向的区别 forward和redirect的区别 request.getRequestDispatcher()..forward(request,response);和 response.sendRedirect();的区别详解
最简单的重定向方式就是使用response对象的sendRedirect()方法。这个方法的签名如下: public void response.sendRedirect(String location) throws IOException 这个方法将状态码和新的页面位置作为响应发回给...
实现原理: ... 2.用户在浏览器填写用户信息,点击submit按钮以Post...3.如果登录验证成功,则sendRedirect重定向到(HTTP:localhost:8080/Main),服务器获取请求头Get,forword转发到(HTTP:localhost:8080/Main.jsp),在浏
Spring Boot 使用 ProxyServlet 代理并统一响应,详见 https://blog.csdn.net/z1353095373/article/details/125005408
Java Servlet API说明文档 绪言 这是一份关于2.1版JavaServletAPI的说明文档,作为对这本文档的补充,你可以到http://java.sun.com/products/servlet/index.html下面下载Javadoc格式的文档。 谁需要读这份文档 这份...
sendredirect()和forward()方法的区别_xyy511的专栏-CSDN博客.mht