sesion监听器使用request对象
//---------------------- SessionListener.java----------------------------------------------------
package listeners;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
// ServletRequestListener为Servlet2.4新增接口
import javax.servlet.ServletRequestListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;
public final class SessionListener
implements HttpSessionListener,ServletRequestListener {
private HttpServletRequest request;
public void requestDestroyed(ServletRequestEvent sre) { }
public void requestInitialized(ServletRequestEvent sre)
{
request=(HttpServletRequest)sre.getServletRequest();
}
public void sessionCreated(HttpSessionEvent event) {
String logMsg=event.getSession().getId()
+"' '"+request.getRemoteAddr()
+":"+request.getRemotePort();
log("sessionCreated('" + logMsg + "')");
}
public void sessionDestroyed(HttpSessionEvent event) {
log("sessionDestroyed('" + event.getSession().getId() + "')");
}
private void log(String message) {
System.out.println("SessionListener: " + message);
}
}
在开始接到客户端请求(requestInitialized)时,获得当前的HttpRequest对象保存在私有成员 request 中,这样在Session创建时可以实现对Session用户进行验证,以及关闭Session,限制IP地址访问等,这里仅以记录Session来源为例(SessionListener.java)
编译这个类后还要在web.xml的host元素内加入以下行:
<listener>
<listener-class>listeners.SessionListener</listener-class>
</listener>
本文适用环境:Tomcat 5.02,jdk1.4
package listeners;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
// ServletRequestListener为Servlet2.4新增接口
import javax.servlet.ServletRequestListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.http.HttpServletRequest;
public final class SessionListener
implements HttpSessionListener,ServletRequestListener {
private HttpServletRequest request;
public void requestDestroyed(ServletRequestEvent sre) { }
public void requestInitialized(ServletRequestEvent sre)
{
request=(HttpServletRequest)sre.getServletRequest();
}
public void sessionCreated(HttpSessionEvent event) {
String logMsg=event.getSession().getId()
+"' '"+request.getRemoteAddr()
+":"+request.getRemotePort();
log("sessionCreated('" + logMsg + "')");
}
public void sessionDestroyed(HttpSessionEvent event) {
log("sessionDestroyed('" + event.getSession().getId() + "')");
}
private void log(String message) {
System.out.println("SessionListener: " + message);
}
}
在开始接到客户端请求(requestInitialized)时,获得当前的HttpRequest对象保存在私有成员 request 中,这样在Session创建时可以实现对Session用户进行验证,以及关闭Session,限制IP地址访问等,这里仅以记录Session来源为例(SessionListener.java)
编译这个类后还要在web.xml的host元素内加入以下行:
<listener>
<listener-class>listeners.SessionListener</listener-class>
</listener>
本文适用环境:Tomcat 5.02,jdk1.4