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("项目启动成功");
}
}
网友评论