常用的监听器接口
1.ServletContextListener
– 监听servletContext
对象的创建以及销毁
1.1 contextInitialized(ServletContextEvent arg0) -- 创建时执行
1.2 contextDestroyed(ServletContextEvent arg0) -- 销毁时执行
2.HttpSessionListener
– 监听session
对象的创建以及销毁
2.2 sessionCreated(HttpSessionEvent se) -- 创建时执行
2.2 sessionDestroyed(HttpSessionEvent se) -- 销毁时执行
3.ServletRequestListener
– 监听request
对象的创建以及销毁
3.1 requestInitialized(ServletRequestEvent sre) -- 创建时执行
3.2 requestDestroyed(ServletRequestEvent sre) -- 销毁时执行
4.ServletContextAttributeListener
– 监听servletContext
对象中属性的改变
4.1 attributeAdded(ServletContextAttributeEvent event) -- 添加属性时执行
4.2 attributeReplaced(ServletContextAttributeEvent event) -- 修改属性时执行
4.3 attributeRemoved(ServletContextAttributeEvent event) -- 删除属性时执行
5.HttpSessionAttributeListener
--监听session
对象中属性的改变
5.1 attributeAdded(HttpSessionBindingEvent event) -- 添加属性时执行
5.2 attributeReplaced(HttpSessionBindingEvent event) -- 修改属性时执行
5.3 attributeRemoved(HttpSessionBindingEvent event) -- 删除属性时执行
6.ServletRequestAttributeListener
--监听reques
t对象中属性的改变
6.1 attributeAdded(ServletRequestAttributeEvent srae) -- 添加属性时执行
6.2 attributeReplaced(ServletRequestAttributeEvent srae) -- 修改属性时执行
6.3 attributeRemoved(ServletRequestAttributeEvent srae) -- 删除属性时执行
创建Listener的两种方式,ServletContextListener举例
1、通过注解的方式
创建一个类实现ServletContextListener
的接口,在这个类上加@WebListener
注解,并且在启动类加上@ServletComponentScan
注解,这样就完成了。如果要改变监听器监听的对象,比如监听session
对象,那就改成实现HttpSessionListener
接口就行了
监听器类:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class ListenerDemo1 implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("进入监听器");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
启动类:
@SpringBootApplication
@ServletComponentScan
@MapperScan(basePackages = {"wwfww.warehouse.mapper"})//不加这句mapper依赖注入不进来
public class WarehouseApplication {
public static void main(String[] args) {
SpringApplication.run(WarehouseApplication.class, args);
}
}
控制台输出:
2、在启动类注册Listener
创建一个类实现ServletContextListener
接口,并且在启动类创建方法来注册就行了
监听器类:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ListenerDemo1 implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("进入监听器,方式二");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
}
启动类:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import tk.mybatis.spring.annotation.MapperScan;
import wwfww.warehouse.aaaTest.listener.ListenerDemo1;
@SpringBootApplication
@MapperScan(basePackages = {"wwfww.warehouse.mapper"})//不加这句mapper依赖注入不进来
public class WarehouseApplication {
public static void main(String[] args) {
SpringApplication.run(WarehouseApplication.class, args);
}
/**
* 注册监听器Listener
*
* @return
*/
@Bean
public ServletListenerRegistrationBean get() {
ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean(new ListenerDemo1());
return bean;
}
}
输出:
补充:如果实现接口,但是IDEA没有提示你实现接口里面的方法,如下:
接口里面可以看到有两个方法的
解决办法:
1、点击右键找到Generate
2、选择Override Methods
3、选择图中两个,点击OK就行了