美文网首页
第五章 Servlet容器

第五章 Servlet容器

作者: AssassinFGO | 来源:发表于2017-04-20 21:19 被阅读0次

5.2 管道任务

Container 的 invoke 方法的调用实际就是调用 Pipeline 的 invoke 方法,Pipeline 包含了容器要执行的任务,一个 valve 代表一个任务,BaseValve是容器的核心任务。阀类似过滤器,执行完成后会调用下一个阀,基础阀总是在最后执行。下面是本章 Pipeline 的实现

public class SimplePipeline implements Pipeline {
  // 构造函数
  public SimplePipeline(Container container) {
    setContainer(container);
  }
  // Pipeline 属性设置
  protected Valve basic = null;
  protected Container container = null;
  protected Valve valves[] = new Valve[0];
  // 成员变量的 getter 和 setter 方法
  ...
  public void setBasic(Valve valve) {
    this.basic = valve;
    ((Contained) valve).setContainer(container);
  }
  // 添加 Valve
  public void addValve(Valve valve) {
    if (valve instanceof Contained)
      ((Contained) valve).setContainer(this.container);
    synchronized (valves) {
      Valve results[] = new Valve[valves.length +1];
      System.arraycopy(valves, 0, results, 0, valves.length);
      results[valves.length] = valve;
      valves = results;
    }
  }
  // Container 调用 invoke 方法执行处理逻辑
  public void invoke(Request request, Response response) {
    // 调用第一个 Valve
    (new SimplePipelineValveContext()).invokeNext(request, response);
  }

  // 本章的 ValveContext 实现
  protected class SimplePipelineValveContext implements ValveContext {
    protected int stage = 0;
    // 遍历 Pipeline 的所有 Valve
    public void invokeNext(Request request, Response response) {
      int subscript = stage;
      stage = stage + 1;
      if (subscript < valves.length) {
        valves[subscript].invoke(request, response, this);
      }  else if ((subscript == valves.length) && (basic != null)) {
        basic.invoke(request, response, this);
      }  else { throw new ServletException("No valve");  }
    }
  } 
}

5.5 Wrapper 应用

  • ex05.pyrmont.core.SimpleLoader: SimpleLoader 负责 Servlet 的类加载工作。
  • ex05.pyrmont.core.SimplePipeline : 如前所述
  • ex05.pyrmont.core.

4
4
4
4
4
4
4
4

4
4

相关文章

  • Tomcat、Servlet、JSP之间是什么关系

    概述 Tomcat: 是Servlet的容器,Servlet运行在Tomcat容器当中,Servlet容器有很多(...

  • Servlet 工作原理解析

    从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 ...

  • servlet架构解析

    从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 ...

  • 从servlet容器说起

    要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点...

  • Servlet1.0

    什么是Servlet ​​ Tomcat容器等级 ​​ Servlet生命周期 ​​ Servlet容器装载Ser...

  • JavaWeb之Servlet

    概念 Servlet 是服务端的组件,运行在 Servlet 容器中,而 Servlet 容器负责 Servlet...

  • servlet 1.2 servlet容器的作用和处理过程

    servlet 运行在servlet容器中,servlet容器负责servlet和客户端的通信以及调用servle...

  • Servlet基础

    Servlet生命周期 在下列时刻Servlet容器装载Servlet:Servlet容器启动时自动装载某些Ser...

  • servlet线程模型

    讲servlet之前要先讲一下servlet容器,Servlet容器是web server或application...

  • Servlet入门(二)

    Servlet生命周期 Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期...

网友评论

      本文标题:第五章 Servlet容器

      本文链接:https://www.haomeiwen.com/subject/zzzlzttx.html