springboot监听器

2020-03-30  本文已影响0人  凌晨的咸鱼

1:监听ServletRequest的创建和销毁


@WebListener

public class LoginListener implements ServletRequestListener {

    @Override

    public void requestDestroyed(ServletRequestEvent servletRequestEvent) {

        System.out.println("请求销毁");

    }

    @Override

    public void requestInitialized(ServletRequestEvent servletRequestEvent) {

        System.out.println("请求创建");

    }

}

2:监听HttpSession的创建和销毁

@WebListener
public class loginSession implements HttpSessionListener {

    // 根据session的创建和销毁数据统计在线人数,用AtomicInteger保证并发
    private AtomicInteger onlineCount = new AtomicInteger(0);

    @Override
    public void sessionCreated(HttpSessionEvent arg0) {
        System.out.println("session创建");
        arg0.getSession().getServletContext().setAttribute("onlineCount", onlineCount.incrementAndGet());
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent arg0) {
        System.out.println("session销毁");
        arg0.getSession().getServletContext().setAttribute("onlineCount", onlineCount.decrementAndGet());
    }
}

可以通过修改Session的过期时间来测试

server.servlet.session.timeout=30s

接口请求方法里要加上HttpSession的定义,请求如果不使用HttpSession,好像是不会自动创建的

    @RequestMapping(value = "/getTopTopic", method = RequestMethod.GET)
    public String getTopTopic(HttpSession session) {
        try {
            return topicService.getTopTopic();
        } catch (Exception e) {
            logger.error("报错信息:" + e);
            return UtilsHelper.CoverToJson(Code.Code_3000.getCode(), "操作异常", ResultStatus.Error.getStatus(), null);
        }
    }

3:监听ServletContext的创建和销毁

@WebListener
public class loginContext implements ServletContextListener {
    
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("context创建了");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("context销毁了");
    }
}

注意:启动类上要加@ServletComponentScan用来扫描Listence

@SpringBootApplication
@ServletComponentScan
@MapperScan("cn.mlxcchina.villagemanagementapp.mapper")
public class VillagemanagementappApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(VillagemanagementappApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(VillagemanagementappApplication.class, args);
        System.out.println("项目启动成功");
    }
}
上一篇 下一篇

猜你喜欢

热点阅读