`

Servlet请求转发 RequestDispatcher与sendRedirect

阅读更多

在Servlet中,利用RequestDispatcher对象,可以将请求转发给另外一个Servlet或JSP页面,甚至是HTML页面,来处理对请求的响应。

一,RequestDispatcher接口方法简介  

     1,RequestDispatcher对象由Servlet容器来创建,封装一个由路径所标识的服务器资源。    

     2,RequestDispatcher接口中定义了二种方法用于请求转发:    

           forward(ServletRequest,ServletResponse)方法:      

                   将请求转发给服务器上另外一个Servlet,JSP页面,或者HTML文件      这个方法必须在响应被提交给客户端之前调用,否则抛出异常。      

                  方法调用后在响应中的没有提交的内容被自动消除。    

           include(ServletRequest,ServletResponse)方法 :     

                 用于在响应中包含其他资源(Servlet,JSP页面或HTML文件)的内容。      

                 即请求转发后,原先的Servlet还可以继续输出响应信息,转发到的Servlet对请求做出的响应将并入原先Servlet的响应对象中。      

      3,forward方法和include方法的区别:

                  forward方法调用后在响应中的没有提交的内容被自动消除。   include方法使原先的Servlet和转发到的Servlet都可以输出响应信息。   

 

二,得到RequestDispatcher对象  

      三种方法可以得到RequestDispatcher对象:   

             1,利用ServletRequest接口中的getRequestDispatcher(String  path)方法。   

             2,ServletContext接口中getNamedDispatcher(String  path)和getRequestDispatcher(String  path)方法。 

     ServletRequest接口和ServletContext接口中getRequestDispatcher方法区别:   

              1,参数的区别    

                      参数虽然都是资源路径名,ServletContext接口的中参数路径必须以“/”开始,是相对于当前Servlet上下文根,    ServletRequest接口中的参数路径不仅可以相对于当前Servlet上下文根,还可以相对与当前Servlet路径    

             2,跨WEB应用程序访问资源    

                      通过ServletContext.getContext()方法获取另个WEB应用程序的上下文环境对象来    调用getRequestDispatcher(String  path)方法 将请求转发到另个WEB应用程序的资源。                       

                     还需要在当前WEB应用程序配置中设置<context>元素,指定crossContext属性值为true。

三,ServletResqonse接口中的sendRedirect()方法和forward()方法的区别  

       二个方法都是用于请求转发的方法,转发给另外的资源为客户端服务。但二者有本质的区别

       sendRedirect()方法原理:   

              1,客户端发送请求,Servlet1做出处理。   

              2,Servlet1调用sendReadirect()方法,将客户端的请求 重新定位 到Servlet2。   

              3,客户端浏览器访问Servlet2.  

              4,Servlet2对客户端浏览器做出响应。 

       forward()方法原理:  

             1,客户端发送请求,Servlet1做出处理。  

             2,Servlet1调用forward()方法,将请求转发给Servlet2来处理请求,为客户端服务。   

             3,Servlet2对客户端浏览器做出响应。      

      区别:   

           1,定位与转发   

                    sendRedirect()方法是重新定位到另外一个资源来处理请求,URL会重新定位,让客户端重新访问另外一个资源。    forward()方法是转发到另外一个资源来处理请求。URL不会变化。隐藏了处理对象的变化。   

           2,处理请求的资源的范围   

                  sendReadirect()方法可以跨WEB应用程序和服务器重新定位资源来处理请求。    forward()方法只能在应用程序内部转发。

分享到:
评论

相关推荐

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

    Servlet请求转发、重定向和包含是Servlet中处理客户端请求的重要技术,它们都涉及到如何有效地管理用户请求和页面跳转,但各自有不同的特性和应用场景。 1. **请求转发(Request Forward)** - 请求转发是在服务器...

    javaServlet请求转发和重定向.pdf

    * forward() 方法的调用者与被调用者之间共享相同的 request 对象和 response 对象,而 sendRedirect() 方法调用者和被调用者使用各自的 request 对象和 response 对象,它们属于两个独立的请求和响应过程。...

    Servlet转发与重定向

    3. 请求转发与重定向的机制:RequestDispatcher.forward 方法在服务器端内部将请求转发给另外一个资源,而 HttpServletResponse.sendRedirect 方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出...

    java servlet请求转发重定向

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

    直接请求转发(Forward)和间接请求转发(Redirect)两种区别.docx

    2. Servlet1响应并调用`sendRedirect()`,指示浏览器向Servlet2发起新请求。 3. 浏览器根据Servlet1的指示,向Servlet2发送请求。 4. Servlet2接收请求并作出响应。 总结: 直接请求转发和间接请求转发的主要区别...

    请求转发与重定向

    Java Servlet 中可以通过 `RequestDispatcher` 的 `forward` 方法来实现请求转发。例如: ```java RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, ...

    请求转发与重定向详解代码

    在Java Servlet中,我们可以使用`RequestDispatcher`的`forward()`方法实现请求转发。例如: ```java RequestDispatcher dispatcher = request.getRequestDispatcher("/anotherServlet"); dispatcher.forward...

    Servlet跳转方式sendReDirect

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

    jsp和servlet请求与响应

    ### JSP和Servlet请求与响应详解 #### 一、JSP内置对象概述 JSP(Java Server Pages)是一种用于创建动态网页的技术。它基于Java Servlet规范,并提供了许多内置对象,以便开发者可以更方便地处理HTTP请求和响应。...

    7.Servlet请求和响应(1).zip

    5. **请求转发与重定向**:Servlet可以使用`RequestDispatcher`的`forward()`方法将请求转发到其他资源,而`sendRedirect()`方法则会向客户端发送一个HTTP重定向响应。 6. **会话管理**:Servlet可以通过`...

    请求转发和重定向的区别共1页.pdf.zip

    本篇文章将详细解析请求转发与重定向的区别。 一、请求转发(Request Forwarding) 1. 定义:请求转发是在服务器端完成的内部操作,它不涉及客户端浏览器的任何更改。当服务器接收到一个请求后,可以决定将该请求...

    JavaWeb中的 请求转发 和 重定向.docx

    在JavaWeb开发中,请求转发和重定向是两种常见的客户端请求处理方式,它们都是用于将一个请求从一个Servlet传递到另一个Servlet或者从一个资源跳转到另一个资源。这两种方法虽然都可以实现页面间的跳转,但它们的...

    Structs2 vs Servlet

    在跳转方面,Servlet通常使用RequestDispatcher或sendRedirect方法进行页面跳转。RequestDispatcher是服务器内部跳转,客户端不会看到中间过程;而sendRedirect是客户端跳转,会向客户端发送一个新的HTTP请求。这种...

    forward方法实现请求转发

    通过该方法可以将当前请求转发到另一个资源(如Servlet或JSP页面)进行处理,并且转发过程中会保留原请求的数据和状态。这种机制对于构建复杂的应用流程非常有用,它可以帮助开发者更好地组织代码结构,提高程序的可...

    servlet代码+说明文档

    5. **Servlet的转发和重定向**:Servlet可以通过RequestDispatcher的forward()方法将请求转发到其他资源,或者通过HttpServletResponse的sendRedirect()方法重定向浏览器。两者的区别在于前者是在服务器端完成的,后...

    servlet 笔记

    - **RequestDispatcher**:使用RequestDispatcher接口的forward()方法实现请求转发。 #### 七、示例代码解析 根据提供的部分代码,我们可以进一步理解Servlet中的一些基本操作: ```java String tableName = ...

    java web servlet实例

    Servlet可以使用`RequestDispatcher`进行请求转发或重定向。转发是服务器内部操作,而重定向是客户端发起新的请求。例如: ```java RequestDispatcher dispatcher = req.getRequestDispatcher("/anotherPage.jsp...

    Java_Servlet教程(繁体)

    四、Servlet请求与响应 Servlet通过HttpServletRequest和HttpServletResponse对象来处理HTTP请求和构建响应。HttpServletRequest包含所有请求信息,如请求参数、请求头、请求路径等。HttpServletResponse则负责设置...

    JSP与servlet之间的传值

    这里需要注意,由于 Servlet 的生命周期管理以及请求转发机制,直接使用 `request` 对象获取 JSP 设置的 `request` 属性通常是不可行的,需要通过特殊的方式(如上述示例)获取原始请求对象。 #### 三、Servlet 向 ...

    servlet实现的页面跳转

    请求转发发生在服务器端,使用`RequestDispatcher`的`forward()`方法。在这种情况下,服务器不会向客户端发送新的HTTP响应,而是将请求转发到另一个资源,客户端浏览器看到的是连续的单一请求过程。例如: ```...

Global site tag (gtag.js) - Google Analytics