zoukankan      html  css  js  c++  java
  • springboot拦截器之自定义监听器listener(三)

    1自定义监听器Listener

    常用的监听器包含三种,分别是servletContextListener、httpSessionListener、ServletRequestListener

    servletContextListener 启动应用的时候就会调用

    1.1ServletRequestListener

    首先,先建立listener包,之后在其中新建一个RequestListener,引用ServletRequestListener中的方法requestDestroyed和requestInitialized

    数据结构

     RequestListener的代码:

    package com.example.demo.listener;

    import javax.servlet.ServletRequestEvent;
    import javax.servlet.ServletRequestListener;
    import javax.servlet.annotation.WebListener;

    @WebListener
    public class RequestListener implements ServletRequestListener {

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
    System.out.println("-----------requestDestroyed--------------");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
    System.out.println("-----------requestInitialized-------------");
    }
    }

    然后通过studyController中的方法进行访问

    /**
    * servlet的请求方式
    * 访问地址:http://localhost:8080/v1/servletTest?id=9
    * @param request
    * @return
    */
    @GetMapping("/v1/servletTest")
    public Object servletTest(HttpServletRequest request) {
    params.clear();
    String id=request.getParameter("id");
    System.out.println("Controller 处理中");
    params.put("id", id);
    return params;

    }

    之后run application ,访问接口地址:http://localhost:8080/v1/servletTest?id=9,可以查看控制台结果执行的顺序

     2ContextListener

    结构

     代码:

    package com.example.demo.listener;

    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    /**
    * 主要用来做统计
    * @author Administrator
    *
    */
    @WebListener
    public class ContextListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent sre) {
    System.out.println("-----------contextDestroyed--------------");
    }

    @Override
    public void contextInitialized(ServletContextEvent sre) {
    System.out.println("-----------contextInitialized-------------");
    }

    }

     之后run as application,在控制台中能看见对应的信息

     3httpSessionListener

     代码

    package com.example.demo.listener;


    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;

    /**
    * HttpSessionListener中sessionCreated是新建一个会话时候触发也可以说是客户端第一次和服务器交互时候触发。
    * sessionDestroyed销毁会话的时候,一般来说只有某个按钮触发进行销毁或者配置定时销毁
    * @author Administrator
    *
    */
    @WebListener
    public class SessionListener implements HttpSessionListener{

    private int onlineCount = 0;//记录session的数量
    /**
    * session创建后执行
    */
    @Override
    public void sessionCreated(HttpSessionEvent se) {
    onlineCount++;
    System.out.println("【HttpSessionListener监听器】 sessionCreated, onlineCount:" + onlineCount);
    se.getSession().getServletContext().setAttribute("onlineCount", onlineCount);
    }

    /**
    * session失效后执行
    */
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
    if (onlineCount > 0) {
    onlineCount--;
    }
    System.out.println("【HttpSessionListener监听器】 sessionDestroyed, onlineCount:" + onlineCount);
    se.getSession().getServletContext().setAttribute("onlineCount", onlineCount);
    }

    }

  • 相关阅读:
    xps转换为pdf工具
    公差与配合教案 2
    C#与C++抉择【z】
    MATLAB C#混合编程demo
    数据结构 第6章 图
    科技英语翻译480句 (九) 举例、异同、例外
    理论与数学应用互助交流QQ群(6314910) 简介【谢绝转载】
    数据结构 第3章 栈和队列
    精通Matlab与C/C++混合程序设计(第2版)
    科技英语翻译480句 (三) 原因、结果
  • 原文地址:https://www.cnblogs.com/zhushilai/p/13559869.html
Copyright © 2011-2022 走看看