listener:监听器
作用:监听web中的三个域对象 :ServletContext ServletRequest HttpSession
监听内容:
监听三个对象的创建和销毁监听三个对象属性的变化监听session中的javabean的状态
注意:listener全部是接口
监听三个对象的创建和销毁
ServletContextListener
ServletRequestListener
HttpSessionListener
监听三个对象属性的变化
ServletContextAttributeListeren
ServletRequestAttributeListeren
HttpSessiontAttributeListeren
ServletRequestAttributeListeren
HttpSessiontAttributeListeren
监听session中的javabean的状态
HttpSessionActiveationListener(钝化和活化)
HttpSessionBindingListener(绑定和解绑)
HttpSessionBindingListener(绑定和解绑)
使用步骤:
1,编写一个类 实现接口
2, 重写方法
3,编写配置文件(大部分都需要)
1,编写一个类 实现接口
2, 重写方法
3,编写配置文件(大部分都需要)
监听三个对象的创建和销毁
ServletContextListener
创建;服务器启动的时候会为每一个项目都创建一个ServletContextListener
销毁:服务器关闭的时候,或者项目被移除的时候
加载配置文件
ServletRequestListener
创建:请求来的时候被创建
销毁:响应生成的时候
HttpSessionListener
一个浏览器对应一个session
创建:request.getSession();
jsp中有内置对象session
jsp访问的时候session就创建了
销毁:三种情况:
session超时:默认30分钟
手动销毁session invalidate
服务器非正常关闭
HttpSessionBindingListener(绑定和解绑)(不需要配置):
检测javabean是否添加到session或从session中移除
ServletContextListener
创建;服务器启动的时候会为每一个项目都创建一个ServletContextListener
销毁:服务器关闭的时候,或者项目被移除的时候
加载配置文件
ServletRequestListener
创建:请求来的时候被创建
销毁:响应生成的时候
HttpSessionListener
一个浏览器对应一个session
创建:request.getSession();
jsp中有内置对象session
jsp访问的时候session就创建了
销毁:三种情况:
session超时:默认30分钟
手动销毁session invalidate
服务器非正常关闭
HttpSessionBindingListener(绑定和解绑)(不需要配置):
检测javabean是否添加到session或从session中移除
HttpSessionActiveationListener(钝化和活化)
钝化:javabean从session中序列化到磁盘上,从内存到硬盘
活化:javabean从磁盘上序列化到session中,从硬盘到内存
可以通过配置文件修改javabean什么时候钝化
监听三个对象属性的变化
钝化:javabean从session中序列化到磁盘上,从内存到硬盘
活化:javabean从磁盘上序列化到session中,从硬盘到内存
可以通过配置文件修改javabean什么时候钝化
监听三个对象属性的变化
public class MyContextAttriLis implements ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent arg0) {
//
System.out.println("在servletcontext中添加一个属性"+arg0.getName());
}
@Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
//
System.out.println("在servletcontext中移除一个属性"+arg0.getName());
}
@Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
//
System.out.println("在servletcontext中替换一个属性"+arg0.getName());
}
public class MyRequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent arg0) {
//
System.out.println("请求销毁了");
}
@Override
public void requestInitialized(ServletRequestEvent arg0) {
//
System.out.println("请求创建了");
}
public class MyServletContextLis implements ServletContextListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// 销毁操作
System.out.println("ServletContext销毁了");
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
// 创建操作
System.out.println("ServletContext创建了");
}
监听创建、销毁以及属性变化时需要在web中编写配置文件
filter>
<filter-name>HelloFilter</filter-name>
<filter-class>com.xxx.filter.HelloFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HelloFilter</filter-name>
<url-pattern>/demo1</url-pattern>
</filter-mapping>
filter-mapping的子标签
filter-name:匹配那个filter对象
url-pattern:匹配过滤的路径
监听session中的javabean的状态
public class Person implements HttpSessionBindingListener{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void valueBound(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
System.out.println("person对象绑定到session中");
}
@Override
public void valueUnbound(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
System.out.println("person对象从session中解绑");
}
public class Person2 implements HttpSessionActivationListener{
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public void sessionDidActivate(HttpSessionEvent arg0) {
//活化
System.out.println("对象序列化到内存上 活化");
}
@Override
public void sessionWillPassivate(HttpSessionEvent arg0) {
// 钝化
System.out.println("对象序列化到磁盘上 钝化");
}