精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久
注冊
|
提交需求
|
訂閱
|
English
首 頁
解決方案
產(chǎn) 品
服 務(wù)
支 持
EDN系統(tǒng)
成功案例
關(guān)于我們
聯(lián)系我們
樹結(jié)構(gòu)圖
EDN系統(tǒng)
圖形圖像
網(wǎng)絡(luò)安全
項目專題
WEB開發(fā)
辦公系列
操作系統(tǒng)
數(shù)據(jù)庫
程序設(shè)計
TOP 10
在Foxmail中如何使…
Ftp 子命令
BigDecimal
MSN在線客服功能模塊使…
會員卡使用方法說明
DataInputStr…
留言板功能說明
CScript
BufferedInpu…
設(shè)置打印機
您現(xiàn)在的位置:
>
技術(shù)沙龍
>
WEB開發(fā)
>
JSP
>
jsp 下實現(xiàn)防止重復(fù)在線,統(tǒng)計在線人數(shù)的辦法
相關(guān)軟件
>
jsp 下實現(xiàn)防止重復(fù)在線,統(tǒng)計在線人數(shù)的辦法
創(chuàng)建者:
webmaster
更新時間:
2005-05-30
22:35
防止重復(fù)在線,統(tǒng)計在線人數(shù)通常由三種辦法:1.通過數(shù)據(jù)庫的記錄 2.使用ServletContext類型的application
3.采用session.
第一種做法較簡單但會給數(shù)據(jù)庫造成負擔.第二種做法還沒去實現(xiàn).:)
本文實現(xiàn)了采用session的做法,基本思想就是正常登陸的時候建立一個session記錄登陸名字,此時激發(fā)監(jiān)聽器。
代碼如下:
1。登陸時假設(shè)登陸名loginINFO[0],建立session記錄登陸名字。
if(rs_login.next()){
Login_servlet.logger.info("登陸驗證成功");//log4j
OnLineUser OLU=new OnLineUser();//
if (!OLU.existUser(loginINFO[0])){
Login_servlet.logger.info("重復(fù)登陸");
return;
}else{
session.setMaxInactiveInterval(3000); //session的生命周期
session.setAttribute(loginINFO[0],OLU);
}
2.監(jiān)聽器代碼:OnLineUser
/*
* 創(chuàng)建日期 2005-5-12
*
* 目的:
*
*/
package cn.wst.common.onLine;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;
import org.apache.log4j.Logger;
import java.util.*;
/**
* @author wangshangting
*
* 目的:
* 用于統(tǒng)計在線人數(shù),防止統(tǒng)一帳號登陸,退出取消賬號
*/
public class OnLineUser implements HttpSessionBindingListener{
// private static OnLineUser instance = null;
// synchronized public static OnLineUser getInstance()//singleton模式,確保只有一個OnLineUser實例
// {
// if( instance == null )
// {
// instance = new OnLineUser();
// }
// return instance;
// }
static Logger logger = Logger.getLogger(OnLineUser.class.getName());
public OnLineUser(){
}
private static Vector users=new Vector(); //靜態(tài)變量!!!!!!!!!!!!
private int i=1;
public int getCount(){
users.trimToSize();
return users.capacity();
}
public boolean existUser(String userName){
users.trimToSize();
boolean existUser=true;
for (int i=0;i
{
if (userName.equals((String)users.get(i)))
{
existUser=false;
OnLineUser.logger.info(users.get(i));
OnLineUser.logger.info("重復(fù)");
break;
}
}
return existUser;
}
public boolean deleteUser(String userName) {
OnLineUser.logger.info("移除開始!!");
users.trimToSize();
if(!existUser(userName)){
int currUserIndex=-1;
for(int i=0;i
if(userName.equals((String)users.get(i))){
// OnLineUser.logger.info("找到");
currUserIndex=i;
break;
}
}
if (currUserIndex!=-1){
OnLineUser.logger.info("移除:"+currUserIndex);
users.remove(currUserIndex);
users.trimToSize();
return true;
}
}
return false;
}
public Vector getOnLineUser()
{
return users;
}
public void valueBound(HttpSessionBindingEvent e) {
users.trimToSize();
users.add(e.getName());
OnLineUser.logger.info(e.getName()+"\t 登入到系統(tǒng)\t"+(new Date()));
OnLineUser.logger.info("第"+i+"進入");
i++;
for(int i = 0;i < users.size();i++){
OnLineUser.logger.info(""+i+":"+users.get(i));
}
System.out.println(" 在線用戶數(shù)為:"+getCount());
}
/**
*
*/
public void valueUnbound(HttpSessionBindingEvent e) {
users.trimToSize();
String userName=e.getName();
deleteUser(userName);
OnLineUser.logger.info(userName+"\t 退出系統(tǒng)\t"+(new Date()));
OnLineUser.logger.info(" 在線用戶數(shù)為:"+getCount());
}
}
3. 要記得在web.xml的所有servlet之前生命 OnLineUser,
cn.wst.common.onLine.OnLineUser
相關(guān)文章
前一則:
Java Servlet/Jsp多語言解決方案
后一則:
JAVA編碼問題的一些理解
本頁查看次數(shù):
公司公告
|
客戶調(diào)查
|
法律聲明
|
誠聘英才
|
給我們投稿
|
繁
閃
頭像
京ICP備05031245號
Copyright @ REDCOME.com ALL Rights Reserved
北京怡康軟件科技有限公司 地址:北京市昌平區(qū)東小口立湯路188號北方明珠大廈1號樓2708 郵編:102218 電話:84909966 傳真:84909900 QQ:335601661