• Servlet--SingleThreadModel接口,RequestDispatcher接口


    • SingleThreadModel接口

    定义
    public interface SingleThreadModel;
    这是一个空接口,它指定了系统如何处理对同一个 Servlet 的调用。如果一个 Servlet 被这个接口指定,那么在这个 Servlet 中的 service 方法中将不会有两个线程被同时执行。Servlet 可以通过维持一个各自独立的 Servlet 实例池,或者通过只让 Servlet 的 service中只有一个线程的方法来实现这个保证。

    • RequestDispatcher接口
    定义:
    public interface RequestDispatcher;

    定义一个对象, 从客户端接收请求, 然后将它发给服务器的可用资源 (例如 Servlet 、 CGI 、HTML 文件、 JSP 文 件 ) 。Servlet引擎创建request dispatcher对象, 用于封装由一个特定的URL定义的服务器资源。这个接口是专用于封装 Servlet 的,但是一个 Servlet 引擎可以创建 request dispatcher 对象用于封装任何类型的资源。request dispatcher 对象是由 Servlet 引擎建立的,而不是由 Servlet 开发者建立的。


    方法
    1、forward
    public void forward(ServletRequest request, ServletReponse response)throws ServletException, IOException;
    被用来从这个 Servlet 向其它服务器资源传递请求。当一个 Servlet 对响应作了初步的处理,并要求其它的对象对此作出响应时,可以使用这个方法。当 request 对象被传递到目标对象时, 请求的 URL 路径和其他路径参数会被调整为反映目标对象的目标 URL 路径。如果已经通过响应返回了一个 ServletOutputStream 对象或 PrintWriter 对象, 这个方法 将不能使用,否则,这个方法会抛出一个 IllegalStateException。
    2、include
    public void include(ServletRequest request, ServletResponse response)throws ServletException, IOException
    用来包括发送给其他服务器资源的响应的内容。 本质上来说, 这个方法反映了服务器端的内容。请求对象传到目标对象后会反映调用请求的请求 URL 路径和路径信息。这个响应对象只能调用这个 Servlet 的 ServletOutputStream 对象和 PrintWriter 对象。

    一个调用 include 的 Servlet 不能设置头域,如果这个 Servlet 调用了必须设置头域的方法(例如 cookie) ,这个方法将不能保证正常使 用。作为一个 Servlet 开发者,你必须妥善地解决那些可能直接存储头域的方法。例如,即使你使用会话跟踪,为了保证 session 的正常工作,你必须 在一个调用 include 的 Servlet 之外开始你的 session。

    package javax.servlet;
    
    import java.io.IOException;
    
    public abstract interface RequestDispatcher
    {
      public abstract void forward(ServletRequest paramServletRequest, ServletResponse paramServletResponse)
        throws ServletException, IOException;
    
      public abstract void include(ServletRequest paramServletRequest, ServletResponse paramServletResponse)
        throws ServletException, IOException;
    }


  • 相关阅读:
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    [iOS基础控件
    白话之jsonp跨域原理分析
    crontab定时任务
    python模块之uuid
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233022.html
Copyright © 2020-2023  润新知