`
desert3
  • 浏览: 2160868 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

servlet-api和tomcat中的观察者模式、门面模式、模版方法模式

 
阅读更多
Servlet-api.jar定义了如下对象
抽象类HttpServlet中使用了模版方法service(定义了HttpServlet处理的总流程和框架),并提供7个doXXX子方法的默认实现,具体的Servlet只需要继承HttpServlet并替换相应的do方法来完成自己的业务逻辑即可。

HttpSession:所有Http协议的Session都需要实现的方法
package javax.servlet.http;
public abstract interface HttpSession


EventObject:所有事件状态对象都将从其派生的根类。 所有 Event 在构造时都引用了对象 "source",在逻辑上认为该对象是最初发生有关 Event 的对象。
public class EventObjectextends Objectimplements Serializable


HttpSessionEvent:HttpSession定义的事件,其souce是HttpSession
package javax.servlet.http;

import java.util.EventObject;

public class HttpSessionEvent extends EventObject
{
  public HttpSessionEvent(HttpSession source)
  {
    super(source);
  }

  public HttpSession getSession() {
    return ((HttpSession)super.getSource());
  }
}


EventListener:所有事件监听器接口必须扩展的标记接口。
public interface EventListener


HttpSessionListener:HttpSession对应的事件监听接口,明确定义了需要监听的事件sessionCreated和sessionDestroyed
package javax.servlet.http;

import java.util.EventListener;

public abstract interface HttpSessionListener extends EventListener
{
  public abstract void sessionCreated(HttpSessionEvent paramHttpSessionEvent);

  public abstract void sessionDestroyed(HttpSessionEvent paramHttpSessionEvent);
}


在tomcat的catalina.jar中,tomcat容器实现的HttpSession类为StandardSession。
StandardSession实现类中,实现了定义了下述属性和方法:
protected transient ArrayList listeners = new ArrayList();:事件监听程序的集合
addSessionListener(SessionListener):添加Session事件监听程序
  public void addSessionListener(SessionListener listener)
  {
    this.listeners.add(listener);
  }

fireSessionEvent(String, Object):触发所有事件监听程序的集合中的事件
  public void fireSessionEvent(String type, Object data)
  {
    if (this.listeners.size() < 1)
      return;
    SessionEvent event = new SessionEvent(this, type, data);
    SessionListener[] list = new SessionListener[0];
    synchronized (this.listeners) {
      list = (SessionListener[])(SessionListener[])this.listeners.toArray(list);
    }

    for (int i = 0; i < list.length; ++i)
      list[i].sessionEvent(event);
  }

removeSessionListener(SessionListener):移除Session事件监听程序
  public void removeSessionListener(SessionListener listener)
  {
    this.listeners.remove(listener);
  }

tellNew:调用fireSessionEvent的地方
  public void tellNew()
  {
    fireSessionEvent("createSession", null);
    ....
  }

public class org.apache.catalina.session.StandardSession implements javax.servlet.http.HttpSession, org.apache.catalina.Session, java.io.Serializable


StandardSessionFacade:和StandardSession 实现了相同的接口HttpSession,在构造函数中把StandardSession的实例传递进来,它只曝露servlet规范中定义的HttpSession中需要实现的方法,其他的方法比如addSessionListener等不需要曝露出去(Facade)
public class org.apache.catalina.session.StandardSessionFacade implements javax.servlet.http.HttpSession


参考:关于观察者模式的问题
分享到:
评论

相关推荐

    jakarta.servlet-api-4.0.4-API文档-中文版.zip

    赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....

    javax.servlet-api-4.0.0-API文档-中文版.zip

    赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...

    jakarta.servlet-api-4.0.4-API文档-中英对照版.zip

    赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....

    servlet-api.jar 下载地址

    Servlet-api.jar是Java Web开发中不可或缺的一个库文件,它包含了Servlet和JSP(JavaServer Pages)规范的API接口。这个库文件主要用于与Web服务器交互,处理HTTP请求,并生成响应。在本文中,我们将深入探讨Servlet...

    servlet-api.jar和jsp-api.jar文件

    Servlet-api.jar和jsp-api.jar是Java Web开发中两个非常重要的库文件,它们包含了Servlet和JSP(JavaServer Pages)的相关API,使得开发者可以构建动态Web应用程序。这两个文件通常由Java EE(Enterprise Edition)...

    servlet-api.jar 3.0版本(tomcat 7.0里的)

    最新的servlet-api.jar,完美结果java代码中注释(@)部分报错的问题

    javax.servlet-api-4.0.0-API文档-中英对照版.zip

    赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...

    servlet-api.jar 和jsp-api

    servlet-api.jar 和jsp-api 工具jar包

    jsp-api.jar和servlet-api依赖包

    这两个API,即`jsp-api.jar`和`servlet-api.jar`,是开发基于Java的Web应用时不可或缺的库文件。 ### JSP API `jsp-api.jar`包含了JSP规范定义的所有接口和类,使得开发者能够创建、管理以及执行JSP页面。以下是...

    javax.servlet-api-3.1.0.jar

    在实际开发中,将`javax.servlet-api-3.1.0.jar`作为项目的依赖,可以确保与各种Web容器(如Tomcat、Jetty)的兼容性。但是需要注意,此库通常仅在编译阶段使用,运行时通常由Web服务器提供,避免了打包到最终的WAR...

    servlet-api.jar

    servlet-api.jar

    javax.servlet-api-4.0.1-API文档-中文版.zip

    赠送jar包:javax.servlet-api-4.0.1.jar; 赠送原API文档:javax.servlet-api-4.0.1-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.1-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.1.pom; ...

    servlet-api-3.0.jar包

    Servlet-api-3.0.jar是Java Servlet API的第三版实现,它是开发Web应用程序的重要组成部分,特别是在基于Java的服务器端编程中。这个库包含了用于创建和管理HTTP服务端点的接口和类,允许开发者构建动态、交互式的...

    servlet-api和jsp-api

    在Tomcat 7.0环境中,servlet-api.jar和jsp-api.jar是运行Java Web应用所必需的库文件。它们通常位于Tomcat的`lib`目录下,因为Tomcat作为Servlet和JSP容器,需要这些API来解析和执行Servlet和JSP代码。开发时,将这...

    tomcat-servlet-api-9.0.0.M10-sources.jar

    tomcat-servlet-api-9.0.0.M10 源码jar包,包里是源码文件,可以直接做jar包使用也可以学习里面的源码调试。

    javax-servlet-api-3.0.1.jar

    在实际开发中,`javax-servlet-api-3.0.1.jar`通常作为项目的依赖引入,这样编译时就可以使用Servlet API中的类和方法,而运行时则由Servlet容器(如Tomcat、Jetty等)提供具体的实现。由于这个JAR文件只包含API接口...

    jsp-api.jar和servlet-api.jar

    标题"jsp-api.jar和servlet-api.jar"提到了两个关键的Java Web开发中的库文件,它们是JavaServer Pages (JSP) 和Servlet技术的标准接口定义。这两个API是Java EE (Enterprise Edition) 平台的重要组成部分,用于构建...

    servlet-api

    Tomcat中lib下的servlet-api包。

    tomcat-servlet-3.0-api-7.0.76-15.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

Global site tag (gtag.js) - Google Analytics