生命周期: 服务器启动创建 服务器关闭销毁
FilterChain: 过滤器链, 由filter-mapping将过滤器连接串起来的 doFilter() -> 执行下一个过滤器, 本质是递归
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {例DAC Demo01Servlet进来了 CAD
服务器一启动就会执行
public class MyFilterC implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { // 获得Filter的初始化参数 String driver = filterConfig.getInitParameter("driver"); System.out.println(driver); }servlet中初始化参数
@WebServlet(value = "/Demo01Servlet", initParams = @WebInitParam(name="location", value="db.properties")) public class Demo01Servlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String location = getServletConfig().getInitParameter("location"); System.out.println(location); System.out.println("Demo01Servlet进来了"); MyFilterA before db.properties Demo01Servlet进来了 MyFilterA afterday07/com.zzxx. autoLogin
监听某个对象的的状态变化的组件。 监听三大域对象:
重点:ServletContextListener 能监测到服务器的开启和关闭
@WebListener//注册 public class MyServletContextListener implements ServletContextListener { // 在ServletContext对象创建时调用 @Override public void contextInitialized(ServletContextEvent sce) { System.out.println("application 创建了"); } // 检测到ServletContext对象的销毁,并且调用该方法 @Override public void contextDestroyed(ServletContextEvent sce) { System.out.println("application 销毁了"); } }1.将对象存储在session中和将对象从session中移除 2.session对象的钝化, 活化 在服务器关闭时, session没有消失, 持久化在磁盘上 tomcat/work/Catalina/localhost/…/web08/SESSIONS.ser 将session数据持久化到磁盘上 -> session钝化 将磁盘上的session文件恢复到内存中 -> session活化
String name -> 可以保存在磁盘上 User user -> 不能保存在磁盘上, 不能序列化, 需要实现Serializable接口
设置session钝化时间:
<Context docBase="/Users/bonnie/IdeaWorks/javaweb/out/artifacts/web08_war_exploded"> <!-- maxIdleSwap:session中的对象多长时间不使用就钝化 --> <!-- directory:钝化后的对象的文件写到磁盘的哪个目录下,配置钝化的对象文件在 work/catalina/localhost/钝化文件 --> <Manager className="org.apache.catalina.session.PersistentManager" maxIdleSwap="1"> <Store className="org.apache.catalina.session.FileStore" directory="bonnie" /> </Manager> </Context>