zoukankan      html  css  js  c++  java
  • Servlet请求转发 RequestDispatcher接口知识点

          在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接口中的sendReadirect()方法和forward()方法的区别 
           二个方法都是用于请求转发的方法,转发给另外的资源为客户端服务。但二者有本质的区别
           sendReadirect()方法原理:  
                  1,客户端发送请求,Servlet1做出处理。  
                  2,Servlet1调用sendReadirect()方法,将客户端的请求 重新定位 到Servlet2。  
                  3,客户端浏览器访问Servlet2. 
                  4,Servlet2对客户端浏览器做出响应。
           forward()方法原理: 
                 1,客户端发送请求,Servlet1做出处理。 
                 2,Servlet1调用sendReadirect()方法,将请求转发给Servlet2来处理请求,为客户端服务。  
                 3,Servlet2对客户端浏览器做出响应。     
          区别:  
               1,定位与转发  
                        sendReadirect()方法是重新定位到另外一个资源来处理请求,URL会重新定位,让客户端重新访问另外一个资源。

                        forward()方法是转发到另外一个资源来处理请求。URL不会变化。隐藏了处理对象的变化。  
               2,处理请求的资源的范围  
                      sendReadirect()方法可以跨WEB应用程序和服务器重新定位资源来处理请求。forward()方法只能在应用程序内部转发。

  • 相关阅读:
    在中文SPS中去掉左上角的“帮助”
    如何将英文SPS站点迁移到中文SPS下?
    Pivot View问题???
    PostgreSQL
    一个简单的全选Jquery插件
    JavaScript 分页控件的实现
    EXTJS新的创建方式
    通用垂直居中方法兼容各浏览器改进
    对Excel中的工作表进行排序的VBA(备份一下)
    关于meta标签(力求“大全”)
  • 原文地址:https://www.cnblogs.com/skjsg/p/4688214.html
Copyright © 2011-2022 走看看