org.zju.cdpsn.module.listener.CDPSNSessi" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

通過HttpSessionListener記錄用戶訪問時間

系統(tǒng) 2094 0
數(shù)據(jù)表:
    
create table SESSION_LOG
(
  ID                 NUMBER not null,
  SESSION_ID         VARCHAR2(100),
  CREATE_DATE        NUMBER,
  LAST_ACCESSED_DATE NUMBER,
  LOGIN_ID           VARCHAR2(40),
  IP_ADDRESS         VARCHAR2(32)
)

  

web.xml中添加
    
<listener>
    <listener-class>
         org.zju.cdpsn.module.listener.CDPSNSessionListener
    </listener-class>
</listener>

  


監(jiān)聽對象:
    
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

import org.zju.cdpsn.biz.dao.sessionlog.SessionLogDAO;
import org.zju.cdpsn.biz.dao.sessionlog.dataobject.SessionLog;
import org.zju.cdpsn.module.fm.screen.factory.ScreenFactory;
import org.zju.cdpsn.module.util.ClientUtil;

public class CDPSNSessionListener implements HttpSessionListener,ServletRequestListener {
	
	private HttpServletRequest request;
	
	@Override
	public void sessionCreated(HttpSessionEvent se) {
		// 獲取將要刪除的session
		HttpSession session = se.getSession();
		// 獲取會話表DAO
		SessionLogDAO sessionLogDAO = (SessionLogDAO) GetBeanFactory.getInstance().getBean("sessionLogDAO");
		// 初始化記錄對象
		SessionLog record = new SessionLog();
		// 獲取ClientIP
		String clientIP = ClientUtil.getClientIp(request);
		record.setIpAddress(clientIP);
		// 獲取sessionId
		String sessionId = session.getId();
		record.setSessionId(sessionId);
		// 獲取創(chuàng)建時間
		long crtimes = session.getCreationTime();
		record.setCreateDate(crtimes);
		// 更新記錄
		sessionLogDAO.insert(record);
	}

	@Override
	public void sessionDestroyed(HttpSessionEvent se) {
		// 獲取將要刪除的session
		HttpSession session = se.getSession();
		// 獲取會話表DAO
		SessionLogDAO sessionLogDAO = (SessionLogDAO) GetBeanFactory.getInstance().getBean("sessionLogDAO");
		// 初始化記錄對象
		SessionLog record = new SessionLog();
		// 獲取sessionId
		String sessionId = session.getId();
		record.setSessionId(sessionId);
		// 獲取最后訪問時間
		long latimes = session.getLastAccessedTime();
		record.setLastAccessedDate(latimes);
		// 更新記錄
		sessionLogDAO.updateBySessionIdSelective(record);
	}
	

	@Override
	public void requestInitialized(ServletRequestEvent sre) {
		this.request = (HttpServletRequest) sre.getServletRequest();
	}

	@Override
	public void requestDestroyed(ServletRequestEvent sre) {
	}
	
	public void setRequest(HttpServletRequest request) {
		this.request = request;
	}

	public HttpServletRequest getRequest() {
		return request;
	}

}


  


獲取Spring beans的工廠對象
    
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * Spring beans工廠類
 * 
 * @author xie
 * @date 2010-05-28
 */
public class GetBeanFactory implements ApplicationContextAware {

	private boolean alreadyInit = false;

	private ApplicationContext appContext;

	private GetBeanFactory() {

	}

	private static class SingletonHolder {
		private static GetBeanFactory factory = new GetBeanFactory();
	}

	/**
	 * 獲得工廠靜態(tài)實例
	 */
	public static GetBeanFactory getInstance() {
		return SingletonHolder.factory;
	}

	/**
	 * 根據(jù)名稱取得Spring Beans對象
	 * 
	 * @param beanName
	 * @return Spring Beans
	 */
	@SuppressWarnings("unchecked")
	public <T> T getScreenBean(String beanName) {
		if (StringUtils.isBlank(beanName)) {
			return null;
		}
		return (T) appContext.getBean(beanName);
	}

	/**
	 * 設置ApplicationContext
	 */
	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		GetBeanFactory getBeanFactory = GetBeanFactory.SingletonHolder.factory;
		if (!getBeanFactory.alreadyInit) {
			getBeanFactory.appContext = applicationContext;
			getBeanFactory.alreadyInit = true;
		}
	}
}

  


用戶名在用戶登錄時候設置,用戶登出是清除Session,方法為session.invalidate();
此方法無法記錄用戶在最后一個頁面上的停留時間,無法獲取瀏覽器關閉事件的信息,不過如果只是用于記錄注冊用戶的在線時間還是可以的。

通過HttpSessionListener記錄用戶訪問時間


更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩久久久精品中文字幕 | 日本黄色免费网址 | 97久久国语露脸精品对白 | 中国国产一级毛片 | 中文字幕专区在线亚洲 | 欧美孕妇乱大交xxxxx | 成人毛片免费观看视频在线 | 热99这里有精品综合久久 | 99久久免费国内精品 | 亚洲国产一区在线精选 | 欧美日韩在线播放 | 国内精品伊人久久久久7777人 | 在线播放精品一区二区啪视频 | 久久这里只有精品免费播放 | 亚洲日本视频在线观看 | 国产精品亚洲专区在线播放 | 欧美一级看片a免费视频 | 99在线精品日韩一区免费国产 | 高清影院|精品秒播3 | 成人亚洲 | 国产亚洲福利精品一区 | 99久久精品久久久久久清纯 | 国产成人亚洲综合网站不卡 | 国产99视频在线观看 | 国产成人精品久久免费动漫 | 天天爆操 | 欧美视频在线观看 | 色婷婷天天综合在线 | 四虎精品成人a在线观看 | 亚洲视频在线观看视频 | 久久久久在线视频 | 狼人综合干伊人 | 色片在线看 | 青娱乐91 | 久久99热精品免费观看欧美 | 拍拍拍精品视频在线观看 | 国产精品怡红院永久免费 | 性做久久久久久久免费看 | 理论毛片 | 成人一级免费视频 | 亚洲欧美日韩精品高清 |