`

Servlet重定向(sendRedirect)流程简析

阅读更多

    我们知道,当一个请求到达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重定向详解(八)

    重定向通过 Servlet API 中 HttpServletReponse 接口提供的 sendRedirect(String location) 方法完成。该方法将客户端的请求重定向到指定的 URL 上。 三、重定向特点 1. Servlet 源组件的响应结果不会返回到客户端...

    Servlet跳转方式sendReDirect

    在Servlet中,有两种主要的跳转方式:`RequestDispatcher.forward()`和`ServletResponse.sendRedirect()`。这两种方法在处理客户端请求时有不同的行为和应用场景。 1. `RequestDispatcher.forward()` - `forward()...

    浅谈Servlet 实现网页重定向的方法

    sendRedirect() 方法是 Servlet 中最常用的网页重定向方法。该方法将临时响应发送到客户端,告诉客户端重定向到新的 URL。以下是使用 sendRedirect() 方法的示例代码: ```java public void doGet...

    servlet请求转发、重定向、包含

    - 通过`HttpServletResponse`对象的`sendRedirect()`方法实现重定向。 - 重定向可以在客户端和服务器之间传递状态信息,例如通过URL拼接参数。 - 由于重定向涉及两次HTTP请求,所以其性能相对较差,但是可以实现...

    Servlet转发与重定向

    Servlet 转发与重定向 Servlet 转发与重定向是 Java Servlet 编程中两个重要的概念,它们都可以让浏览器获得另外一个 URL 所指向的资源,但是它们的内部运行机制有着很大的区别。 RequestDispatcher.forward 方法 ...

    JSPServlet的重定向技术综述

    `response.sendRedirect()`方法则是在客户端执行的重定向操作。它会在浏览器端接收到服务器返回的HTTP响应后,根据响应头中的Location字段,浏览器会发起一个新的HTTP请求到指定的URL。这使得`sendRedirect()`可以...

    java servlet请求转发重定向

    ### Java Servlet 请求转发与重定向详解 #### 一、引言 在Java Web开发中,请求转发和重定向是两种非常重要的技术手段,用于控制页面之间的跳转逻辑。这两种技术虽然都能实现页面间的跳转,但其工作原理、应用场景...

    sendRedirect()和forward()

    如图2-20所示,sendRedirect()方法的交互过程如下:浏览器访问Servlet1,Servlet1想让Servlet2为客户端服务,于是调用sendRedirect()方法,将客户端的请求重定向到Servlet2,浏览器访问Servlet2,Servlet2对客户端的...

    servlet源码、流程和应用方法

    6. 转发与重定向:利用`RequestDispatcher`的`forward()`和`sendRedirect()`方法实现页面跳转。 通过学习和实践这些知识点,开发者可以更高效地利用Servlet来构建动态Web应用,例如实现登录验证、数据查询、文件...

    JSP-Servlet.rar_jsp_jsp综述_servlet_servlet jsp

    2. **Servlet中的重定向**:在Servlet中,同样使用`HttpServletResponse`对象的`sendRedirect()`方法: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ...

    javaServlet请求转发和重定向.pdf

    Java Servlet 请求转发和重定向 Java Servlet 请求转发和重定向是两种不同的页面跳转机制,它们在 Web 应用程序中扮演着重要的角色。理解这两种机制的区别和使用场景是非常重要的。 请求转发是指将请求再转发到另...

    Servlet之forward、sendRedirect、 include区别与使用实例

    Servlet之forward、sendRedirect、 include区别与使用实例 ,具体效果和过程看博文http://blog.csdn.net/evankaka/article/details/45169569

    页面转向与重定向

    在 Servlet 中,我们可以使用 request.getRequestDispatcher("new.jsp").forward(request, response) 语句来实现转发,而重定向可以使用 response.sendRedirect("new.jsp") 语句来实现。在 JSP 页面中,我们也可以...

    jsp response.sendRedirect不跳转的原因分析及解决.docx

    在Java Server Pages (JSP) 技术中,`response.sendRedirect()` 是一种常用的实现服务器端重定向的方法。然而,在实际项目开发过程中,有时会遇到虽然调用了 `response.sendRedirect()` 方法,但页面并没有按预期...

    jsp response.sendRedirect()用法详解.docx

    jsp response.sendRedirect()函数是JSP中一种常用的重定向方法,它可以将用户重定向到指定的页面。下面我们将详细介绍jsp response.sendRedirect()函数的用法和实现原理。 首先,我们需要了解response和request对象...

    servlet 笔记

    Servlet的工作流程主要包括以下几个步骤: 1. **加载和实例化**:当Servlet容器(通常是Web服务器)接收到客户端的请求时,如果发现该请求与某个Servlet相关联,则会加载并实例化该Servlet。 2. **初始化**:Servlet...

    Jsp利用response.sendRedirect、cookie传参

    `response.sendRedirect`是Servlet API中的一个方法,用于重定向浏览器到一个新的资源。当在JSP或Servlet中调用此方法时,它会发送一个302状态码给客户端,指示客户端重新发起请求到指定的URL。这种方法特别适合于...

    JavaWeb开发技术-实现请求重定向.pptx

    在JavaWeb开发中,实现请求重定向可以使用Servlet的sendRedirect()方法。该方法可以将客户端重定向到新的资源路径,以便客户端重新发送请求。例如,在登录页面中,如果用户输入的用户名密码错误,可以使用...

    servlet跳转的几种情况

    servlet 跳转的几种情况 Servlet 跳转是指 Servlet 程序在执行过程中将控制权转移到另一个资源的过程,例如跳转到另一个 Servlet、...了解 Servlet 跳转的几种情况,可以帮助开发者更好地控制程序的流程和数据传递。

Global site tag (gtag.js) - Google Analytics