struts2监听器

与拦截器差不多~配置→写类√两步解决~_(:зゝ∠)_,~这是一个统计在线人数的小测试~

web.xml中配置listener标签,用自定义的监听类替换掉原先的~session-config标签中设置session的超时时间

web.xml:

 

        <listener>
    	<!-- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> -->
    	<listener-class>com.web.listener.CountLineListener</listener-class>
	</listener>
	<!-- 设置session超时时间 -->
	<session-config>
		<session-timeout>60</session-timeout>
	</session-config>

 

 

CountLineListener.java:

package com.web.listener;

import java.text.SimpleDateFormat;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.springframework.web.context.ContextLoaderListener;

/**
 * 监听器
 * @author Administrator
 *
 */
public class CountLineListener extends ContextLoaderListener implements HttpSessionListener{
	
	public CountLineListener() {
		super();
	}
	
	public void sessionCreated(HttpSessionEvent se) {
		System.out.println("创建session......"); 
        ServletContext context = se.getSession().getServletContext(); 
        Integer count = (Integer)context.getAttribute("count"); 
        if(count == null){ 
            count = new Integer(1); 
        }else{ 
            int co = count.intValue( ); 
            count= new Integer(co+1); 
        } 
        System.out.println(new SimpleDateFormat("HH:mm:ss").format(System.currentTimeMillis())+" 当前用户人数:"+count); 
        context.setAttribute("count", count);//保存人数
		
	}
	
	public void sessionDestroyed(HttpSessionEvent se) {
		System.out.println("销毁session......"); 
        ServletContext context = se.getSession().getServletContext(); 
        Integer count = (Integer)context.getAttribute("count"); 
        int co = 0;
        if(count != null)count.intValue();
        count = new Integer(co - 1); 
        context.setAttribute("count", count); 
        System.out.println(new SimpleDateFormat("HH:mm:ss").format(System.currentTimeMillis())+" 当前用户人数:"+count); 
		
	}
	
} 

session创建时会调用sessionCreated(HttpSessionEvent se)方法,销毁时调用sessionDestroyed(HttpSessionEvent se)方法,用不同浏览器测试√:

struts2监听器
 

你可能感兴趣的:(struts2,监听器,listener)