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
public class EventObjectextends Objectimplements Serializable
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()); }}public interface EventListener
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);} public void addSessionListener(SessionListener listener) { this.listeners.add(listener); } 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); } public void removeSessionListener(SessionListener listener) { this.listeners.remove(listener); } 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
public class org.apache.catalina.session.StandardSessionFacade implements javax.servlet.http.HttpSession