Servlet核心接口是:
GenericServlet
HttpServlet
ServletRequest HttpServletRequest
ServletResponse HttpServletResponse
Servlet装载分成三种情形:
Servlet容器启动时自动装载某些Servlet;
在Servlet容器启动后,客户首次向Servlet发出请求;
Servlet的类文件被更新后,重新装载Servlet.
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet整个生命周期中,init方法只被调用一次。init()方法有两种重载形式:
public void init(ServletConfig config) throws ServletException;
public void init() throws ServletException;
在Servlet的初始化阶段,Servlet容器会为Servlet创建一个ServletConfig对象,用来存放Servlet的初始化配置信息,如Servlet如的初始化参数等。如果Servlet类覆盖了第一种带参数的init方法,应该先调用super.init(config)方法确保参数config引用ServletConfig对象;如果覆盖的是第二种不带参数的init方法,可以不调用super.init()方法,如果要在init方法中访问ServletConfig对象,可以调用Servlet类的getServletConfig()方法。
对于到达Servlet容器的客户请求,Servlet容器创建特定于这个请求的ServletRequest和ServletResponse,然后调用Servlet的service方法.该方法从ServletRequest对象获得客户请求信息并处理该请求,通过ServletResponse对象向客户返回响应结果.
当web应用终止或者Servlet容器终止,或者Servlet容器重新装载Servlet的新实例,Servlet容器都会先调用Servlet的destroy方法,以释放Servlet占用的资源
Session的持久化是由SessionManager来管理的。Tomact提供了两个实现类:
org.apache.catalina.session.StandardManager
org.apache.catalina.session.PersistentManager
1.StandardManager
StandardManager是默认的Session Manager。它的实现机制为:当Tomcat服务器关闭或重启,或则Web应用被重新加载时,会对在内存中的HttpSession对象进行持久化,把它们保存到文件系统中,默认的文件为/work/Catalina/hostname/applicationname/SESSIONS.ser。重启Tomcat服务器后,Tomcat服务器把SESSION.ser中的持久化HttpSession对象加载到内存中,此时对客户端来说,依然处于同一个Session中。
2、PersistentManager
PersistentManager能够把Session对象保存到Session Store中,它提供了比StandardManager更为灵活的Session管理功能,它具有以下功能:
i.当Tomcat服务器关闭或重启,或则Web应用被重新加载时,会对在内存中的HttpSession对象进行持久化,把它们保存到Session Store中;
ii.具有容错功能,及时把Session备份到Session Store中,当Tomcat服务器意外关闭后再重启时,可以从Session Store中恢复Session对象;
iii.可以灵活控制在内存中的Session数目,将部分Session转移到Session Store中。
Tomcat实现持久化Session Store的接口为org.apache.Catalina.Store,目前提供了两个实现这一接口的类:org.apache.Catalina.FileStore和org.apache.Catalina.JDBCStore。