• JavaWeb三大组件之Listener------Listener详细讲解


     ✨✨个人主页:沫洺的主页

    📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 

                               📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专栏

                               📖Docker专栏📖Reids专栏📖MQ专栏📖SpringCloud专栏     

    💖💖如果文章对你有所帮助请留下三连✨✨

    🌳Listener

    🌲Listener介绍

    概念:Listener 表示监听器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。

    • 监听器可以监听就是在application,session,request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件

    Listener分类:JavaWeb中提供了8个监听器

    三个事件源(application,session,request)或者三个容器

    第一类:监听容器本身的创建和销毁

    • ServletContextListener
    • HttpSessionListener
    • ServletRequestListener

    第二类:监听容器的内容变化

    • ServletContextAttributeListener
    • HttpSessionAttributeListener
    • ServletRequestAttributeListener

    第三类:专门针对Javabean的,让Javabean实现接口重写方法即可

    • HttpSessionBindingListener
    • HttpSessionActivationListener

    🌾Listener使用

    1. 定义类,实现ServletContextListener接口

    2. 在类上添加@WebListener 注解

    3.其他监听器的使用方法基本一致

    1. package com.moming;
    2. import javax.servlet.ServletContextEvent;
    3. import javax.servlet.ServletContextListener;
    4. //使用频率不高
    5. //一般在spring框架初始化会使用到
    6. public class ContextLoaderListener implements ServletContextListener {
    7. //初始化对象方法
    8. @Override
    9. public void contextInitialized(ServletContextEvent servletContextEvent) {
    10. //加载资源,
    11. System.out.println("ContextLoaderListener...");
    12. }
    13. //销毁方法
    14. @Override
    15. public void contextDestroyed(ServletContextEvent servletContextEvent) {
    16. //释放资源
    17. }
    18. }

    第三类:专门针对Javabean的使用方法

    User实体类实现监听器

    1. package com.moming.pojo;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. import javax.servlet.http.HttpSessionBindingEvent;
    6. import javax.servlet.http.HttpSessionBindingListener;
    7. @Data
    8. @AllArgsConstructor
    9. @NoArgsConstructor
    10. public class User implements HttpSessionBindingListener {
    11. private int id;
    12. private String name;
    13. @Override
    14. public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
    15. System.out.println("[绑定]id为:"+id+"的用户:"+name+"被添加到session中");
    16. }
    17. @Override
    18. public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
    19. System.out.println("[解绑定]id为:"+id+"的用户:"+name+"被移除session");
    20. }
    21. }

    AServlet

    1. package com.moming.servlet;
    2. import com.moming.pojo.User;
    3. import javax.servlet.*;
    4. import javax.servlet.http.*;
    5. import javax.servlet.annotation.*;
    6. import java.io.IOException;
    7. @WebServlet("/a")
    8. public class AServlet extends HttpServlet {
    9. @Override
    10. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    11. //绑定Session
    12. User user = new User(110,"沫洺");
    13. request.getSession().setAttribute("u", user);
    14. }
    15. @Override
    16. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    17. doGet(request, response);
    18. }
    19. }

    BServlet

    1. package com.moming.servlet;
    2. import javax.servlet.*;
    3. import javax.servlet.http.*;
    4. import javax.servlet.annotation.*;
    5. import java.io.IOException;
    6. @WebServlet("/b")
    7. public class BServlet extends HttpServlet {
    8. @Override
    9. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    10. //解除绑定
    11. request.getSession().removeAttribute("u");
    12. }
    13. @Override
    14. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    15. doGet(request, response);
    16. }
    17. }

    绑定

     解绑定

  • 相关阅读:
    【GEE笔记4】GEE的数据下载和上传(Google Drive和Google Assets)
    maven配置jib-maven-plugin插件构建java应用docker镜像
    通过代码优雅地编写图表——Mermaid语法
    约数:AcWing 870. 约数个数
    TStor CSP文件存储在大模型训练中的实践
    eclipsejava
    吃透这份“Java进阶核心手册”再战字节,直接把面试官按在地上摩擦
    链表的常见数据结构及题目
    Android 工程的依赖关系图绘制
    Qt编写视频监控管理平台(支持海康/大华/宇视/华为/天地伟业/H264/H265等)
  • 原文地址:https://blog.csdn.net/HeyVIrBbox/article/details/126731866