• Listener: 监听器


    监听作用域的创建与销毁

    • ServletContextListener:应用作用域监听器,监听服务器启动与关闭
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    //应用作用域监听器,监听服务器启动与关闭
    @WebListener
    public class CustomServletContextListener implements ServletContextListener {
    
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            System.out.println("监听到服务器正在启动中...");
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            System.out.println("监听到服务器正在关闭中...");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    数据字典

    package com.javakc.web1.listener;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    import java.util.HashMap;
    import java.util.Map;
    
    //应用作用域监听器,监听服务器启动与关闭
    @WebListener
    public class CustomServletContextListener2 implements ServletContextListener {
    
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            System.out.println("监听到服务器正在启动中...");
    
            //数据字典
            /*Map genderMap = Map.of(1, "男", 2, "女", 3, "保密");
            Map levelMap = Map.of(1, "初级", 2, "中级", 3, "高级");*/
    
            Map<Integer, Object> genderMap = new HashMap<>();
            genderMap.put(1, "男");
            genderMap.put(2, "女");
            genderMap.put(3, "保密");
    
            Map<Integer, Object> levelMap = new HashMap<>();
            levelMap.put(1, "初级");
            levelMap.put(2, "中级");
            levelMap.put(3, "高级");
    
            ServletContext context = sce.getServletContext();
            context.setAttribute("gender", genderMap);
            context.setAttribute("level", levelMap);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(
            name = "UserServlet",
            urlPatterns = "/user.do",
            loadOnStartup = 0
    )
    public class UserServlet1 extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println(request.getServletContext().getAttribute("level"));
            System.out.println(request.getServletContext().getAttribute("gender"));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • HttpSessionListener:会话作用域监听器,监听用户登陆与退出
    package com.javakc.web1.listener;
    
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    //会话作用域监听器
    @WebListener
    public class CustomHttpSessionListener1 implements HttpSessionListener {
        @Override
        public void sessionCreated(HttpSessionEvent httpSessionEvent) {
            System.out.println("监听用户登录");
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
            System.out.println("监听用户退出");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    @WebServlet(
            name = "UserServlet",
            urlPatterns = "/user.do",
            loadOnStartup = 0
    )
    //会话作用域创建
    public class UserServlet2 extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //创建会话作用域
            HttpSession session1 = request.getSession();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    
    @WebServlet(
            name = "LogoutServlet",
            urlPatterns = "/logout.do",
            loadOnStartup = 0
    )
    //会话作用域销毁
    public class UserServlet3 extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            HttpSession session = request.getSession(false);
            //单独销毁,立即销毁
            if (null != session) {
                //立即销毁
                session.invalidate();
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • ServletRequestListener:请求作用域监听器,监听请求发出与响应返回
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletRequestEvent;
    import javax.servlet.ServletRequestListener;
    import javax.servlet.annotation.WebListener;
    
    @WebListener
    public class CustomServletRequestListener implements ServletRequestListener {
        @Override
        public void requestInitialized(ServletRequestEvent servletRequestEvent) {
            System.out.println("监听请求的发出");
        }
    
        @Override
        public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
            System.out.println("监听响应的返回");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    package com.javakc.web1.user;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebInitParam;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.Writer;
    
    @WebServlet(
            name = "UserServlet",
            urlPatterns = "/user.do",
            loadOnStartup = 0
    )
    //Servlet环境搭建
    public class UserServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("UserServlet doGet method!");
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            System.out.println("UserServlet doPost method!");
    
            //响应类型
            response.setContentType("text/html;charset=utf-8");
            Writer writer = response.getWriter();
            writer.write("");
            writer.write("");
            writer.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    监听作用域的属性改变事件

    • ServletContextAttrubiteListener:监听应用作用域属性的改变
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletContextAttributeEvent;
    import javax.servlet.ServletContextAttributeListener;
    import javax.servlet.annotation.WebListener;
    
    @WebListener
    public class CustomServletContextAttributeListener implements ServletContextAttributeListener {
        //添加属性
        @Override
        public void attributeAdded(ServletContextAttributeEvent scae) {
            //输出属性名称和值
            System.out.println(scae.getName() + ":" + scae.getValue());
        }
    
        //修改属性
        @Override
        public void attributeReplaced(ServletContextAttributeEvent scae) {
            System.out.println("修改属性");
        }
    
        //删除属性
        @Override
        public void attributeRemoved(ServletContextAttributeEvent scae) {
            System.out.println("删除属性");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(
            name = "UserServlet",
            urlPatterns = "/user.do",
            loadOnStartup = 0
    )
    //应用作用域
    public class UserServlet5 extends HttpServlet {
    
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //获取应用作用域
            ServletContext context = request.getServletContext();
    
            //从应用作用域获取属性
            Object username1 = context.getAttribute("username");
            System.out.println("第一次从请求作用于获取属性:" + username1);
    
            //向应用作用域中写入属性
            context.setAttribute("username", "admin");
    
            //从应用作用域获取属性
            Object username2 = context.getAttribute("username");
            System.out.println("第二次从请求作用于获取属性:" + username2);
    
            //从应用作用域中移除属性
            context.removeAttribute("username");
    
            //从作用域中获取属性值
            Object username3 = context.getAttribute("username");
            System.out.println("第三次从请求作用于获取属性:" + username3);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • HttpSessionAttrubiteListener:监听会话作用域属性的改变
    package com.javakc.web1.listener;
    
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSessionAttributeListener;
    import javax.servlet.http.HttpSessionBindingEvent;
    
    @WebListener
    public class CustomHttpSessionAttributeListener implements HttpSessionAttributeListener {
        @Override
        public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
            System.out.println("监听会话作用域属性添加");
        }
    
        @Override
        public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
            System.out.println("监听会话作用域属性移除");
        }
    
        @Override
        public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
            System.out.println("监听会话作用域属性替换");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • ServletRequestAttrubiteListener:监听请求作用域属性的改变
    package com.javakc.web1.listener;
    
    import javax.servlet.ServletRequestAttributeEvent;
    import javax.servlet.ServletRequestAttributeListener;
    import javax.servlet.annotation.WebListener;
    
    @WebListener
    public class CustomServletRequestAttributeListener implements ServletRequestAttributeListener {
        @Override
        public void attributeAdded(ServletRequestAttributeEvent servletRequestAttributeEvent) {
            System.out.println("请求作用域属性添加");
        }
    
        @Override
        public void attributeRemoved(ServletRequestAttributeEvent servletRequestAttributeEvent) {
            System.out.println("请求作用域属性移除");
        }
    
        @Override
        public void attributeReplaced(ServletRequestAttributeEvent servletRequestAttributeEvent) {
            System.out.println("请求作用域属性替换");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    package com.javakc.web1.context;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(
            name = "UserServlet",
            urlPatterns = "/user.do",
            loadOnStartup = 0
    )
    //请求作用域
    public class UserServlet1 extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //从作用域中获取属性值
            Object username1 = request.getAttribute("username");
            System.out.println("第一次从请求作用于获取属性:" + username1);
    
            //向作用域中写入属性值
            request.setAttribute("username", "admin");
    
            //从作用域中获取属性值
            Object username2 = request.getAttribute("username");
            System.out.println("第二次从请求作用于获取属性:" + username2);
    
            //从作用域中移除属性
            request.removeAttribute("username");
    
            //从作用域中获取属性值
            Object username3 = request.getAttribute("username");
            System.out.println("第三次从请求作用于获取属性:" + username3);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
  • 相关阅读:
    分享一个基于python的个性推荐餐厅系统源码 餐厅管理系统代码
    Qt之自定义事件QEvent
    地图聚合点展示
    【基本数据结构 四】线性数据结构:队列
    简单个人网页设计作业 静态HTML个人主题网页作业 DW个人网站模板下载 大学生简单个人网页作品代码 个人网页制作 学生个人网页Dreamweaver设计作业
    使用 Tailwind CSS 自定义基础样式层
    lv9 嵌入式开发 数据库sqlite
    【从零开始学习 SystemVerilog】8.6、SystemVerilog 约束—— inside constraint
    数据可视化实验一:Panda数据处理及matplotlib绘图初步
    文件操作的常用技巧(持续更新)
  • 原文地址:https://blog.csdn.net/qq_45939736/article/details/126920317