web基础-Servlet监听器
概念
Servlet监听器是Servlet规范中定义的一种特殊类,用于监听ServletContext,HttpSession和ServletRequest等作用域对象的创建,销毁,属性改变。
使用
- 监听request
- 监听session
- 监听application
1.监听request范例
- 创建一个实现了指定接口的java类
public class Listener implements ServletRequestListener,ServletRequestAttributeListener{
//request对象销毁监听方法
public void requestDestroyed(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("Request被销毁了");
}
//request对象销毁监听方法
public void requestInitialized(ServletRequestEvent sre) {
// TODO Auto-generated method stub
System.out.println("Request我被创建了");
}
//request对象属性添加监听方法
public void attributeAdded(ServletRequestAttributeEvent srae) {
// TODO Auto-generated method stub
System.out.println("Request添加一条数据:"+srae.getName()+srae.getValue());
}
//request对象移除属性监听方法
public void attributeRemoved(ServletRequestAttributeEvent srae) {
// TODO Auto-generated method stub
}
//request对象属性替换监听方法
public void attributeReplaced(ServletRequestAttributeEvent srae) {
// TODO Auto-generated method stub
}
}
- 在web.xml里面配置监听器
<listener>
<listener-class>edu.yjsj.listener.Listener</listener-class>
</listener>
监听器完成网页访问人数功能服务器代码
package edu.yjsj.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class Listener2 implements HttpSessionListener,ServletContextListener{
ServletContext sc = null;
public void contextDestroyed(ServletContextEvent sce) {
// TODO Auto-generated method stub
}
public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
//Application里面存储初值
sc.setAttribute("count", 0);
}
public void sessionCreated(HttpSessionEvent se) {
// TODO Auto-generated method stub
//获取Application里面的存储值
int count = (Integer) sc.getAttribute("count");
//session创建时自增再存储
sc.setAttribute("count", ++count);
}
public void sessionDestroyed(HttpSessionEvent se) {
// TODO Auto-generated method stub
//获取Application里面的存储值
int count = (Integer) sc.getAttribute("count");
//session创建时自减再存储
sc.setAttribute("count", --count);
}
}
学习过程积累,有问题欢迎指教