servlet监听HttpSession实例源码



servlet监听HttpSession实例源码,jsp如何监听Session? 监听HttpSession的active、Passivate情况。

HttpSession_Listener.java HttpSession监听器源码:

package com.cn.listener;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;

import javax.management.j2ee.statistics.ServletStats;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionActivationListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class HttpSession_Listener implements HttpSessionActivationListener,HttpSessionListener,
ServletContextListener,HttpSessionAttributeListener{
int users =0;
ServletContext context = null;
public void sessionDidActivate(HttpSessionEvent arg0) {
// TODO 监听HttpSession的active情况
writer(“sessionDidActivate(“+arg0.getSession().getId()+”)”);
}

public void sessionWillPassivate(HttpSessionEvent arg0) {
// TODO 监听HttpSession的Passivate情况
writer(“sessionWillPassivate(“+arg0.getSession().getId()+”)”);
}

public void sessionCreated(HttpSessionEvent arg0) {
// TODO HttpSession的创建监听
users++;//创建一个会话,把users变量+1
writer(“sessionCreated(“+arg0.getSession().getId()+”目前拥有”+users+”个用户”+”)”);//目前应用的用户个数
//把会话数设置到ServletContext的属性users中
context.setAttribute(“users”, new Integer(users));
}

public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO HttpSession的释放监听
users–;
writer(“sessionCreated(“+arg0.getSession().getId()+”目前拥有”+users+”个用户”+”)”);//目前应用的用户个数
//把会话数设置到ServletContext的属性users中
context.setAttribute(“users”, new Integer(users));
}

public void contextDestroyed(ServletContextEvent arg0) {
// TODO 监听Servlet上下文被释放
this.context=null;
writer(“ServletContext被释放”);
}


public void contextInitialized(ServletContextEvent arg0) {
// TODO dui ServletContext进行初始化
this.context = arg0.getServletContext();//初始化ServletContext对象
writer(“ServletContext被初始化”);
}

public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO 监听Http会话中的属性添加
writer(“attributeAdded(“+arg0.getSession().getId()
+”,”+arg0.getName()+”,”+arg0.getValue()+”)”);
}

public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO 监听Http会话中的属性删除
writer(“attributeRemoved(“+arg0.getSession().getId()
+”,”+arg0.getName()+”,”+arg0.getValue()+”)”);
}

public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO 监听HttpSession中的属性更新
writer(“attributeReplaced(“+arg0.getSession().getId()
+”,”+arg0.getName()+”,”+arg0.getValue()+”)”);

}
public void writer(String message){
PrintWriter printWriter = null;
try {
printWriter = new PrintWriter(new FileOutputStream(“D:\\session.txt”,true));
printWriter.println(new java.util.Date().toLocaleString()+” Session_Listener: “+message);
printWriter.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

被监听的jsp文件session_listener.jsp:

<%@ page language=”java” import=”java.util.*” pageEncoding=”utf-8″%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<title>My JSP ‘session_listener.jsp’ starting page</title>
</head>
<body>
<%
out.print(“SeesionListener”);
session.setAttribute(“SessionName”,”Jack”);
session.setAttribute(“SessionName”,”Micok”);
session.setAttribute(“SessionName”,”Micok”);
session.removeAttribute(“SessionName”);
session.invalidate();
%>
</body>
</html>

web.xml配置文件:

<?xml version=”1.0″ encoding=”UTF-8″?>
<web-app version=”2.5″
xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

<listener>
<listener-class>com.cn.listener.HttpSession_Listener</listener-class>
</listener>
</web-app>