美文网首页
Servlet生命周期,监听器,过滤器

Servlet生命周期,监听器,过滤器

作者: Responsibility_ | 来源:发表于2020-08-05 08:52 被阅读0次

    Servlet生命周期

    Servlet生命周期.png

    servlet生命周期一共分为4个状态 。分别是实例化:在第一次发起请求时调用构造方法,创建实例;初始化:第一次发起请求进行一些初始化操作,调用init方法;服务:调用Service方法 ,根据客户端的不同类型的请求,执行不同的方法,例如get、post、deleat等请求,执行相应的方法;销毁:服务器关闭,Servlet销毁,在销毁时调用destroy方法
    注意:实例化与初始化只在第一次发起请求时执行,第二次及以后不再执行,进入服务状态。

    监听器

    web监听器是一种Servlet中的特殊的组件,它能帮助开发者监听web中特定的对象。

    如何实现监听器

    • 创建不同的监听器要先实现对应的接口。
    • 加类注解:@WebListener

    常用监听器:

    • ServletContextListener

    作用:监听服务器(应用)的启动与关闭
    代码示例:

    监听对象的状态

    @WebListener // 配置当前监听器
    public class ApplicationListener implements ServletContextListener {
        
        // 服务器的启动(初始化)
        @Override
        public void contextInitialized(ServletContextEvent sce) {
        
        }
        
        // 服务器的关闭(销毁)
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            
        }
    }
    
    • HttpSessionListener监听器

    作用:监听会话的开始与结束
    注意:一个session包括多个请求,session在第一次请求时创建。
    代码示例:

    @WebListener
    public class SessionListener implements HttpSessionListener{
        
        /**
         * 监听Session会话的创建
         */
        @Override
        public void sessionCreated(HttpSessionEvent se) {
            System.out.print("一个新的会话被创建:");
            HttpSession currentSession = se.getSession();
            System.out.println(currentSession.getId());
        }
        
        /**
         * 监听Session会话的销毁
         */
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
            System.err.println("会话被销毁:" + se.getSession().getId());
        }
    }
    
    • ServletRequestListener

    作用:监听request的创建和销毁

    @WebListener
    public class RequestListener implements ServletRequestListener{
        /**
         * 监听请求的创建
         */
        @Override
        public void requestInitialized(ServletRequestEvent sre) {
            System.out.println("捕获一个来自" + sre.getServletRequest().getRemoteAddr()+"的请求!");
        }
        
        /**
         * 监听请求的销毁
         */
        @Override
        public void requestDestroyed(ServletRequestEvent sre) {
            System.out.println("来自" + sre.getServletRequest().getRemoteAddr()+"的请求已被销毁!");
        }
        
        
    

    监听Attribute中键值对的状态(新增,删除,替换)

    • ServletContextAttributeListener

    • HttpSessionAttributeListener

    • ServletRequestAttributeListener

    相关文章

      网友评论

          本文标题:Servlet生命周期,监听器,过滤器

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