資源簡介

代碼片段和文件信息
package?org.com.filter;
import?java.io.IOException;
import?java.util.Map;
import?javax.servlet.Filter;
import?javax.servlet.FilterChain;
import?javax.servlet.FilterConfig;
import?javax.servlet.ServletException;
import?javax.servlet.ServletRequest;
import?javax.servlet.ServletResponse;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;
import?javax.servlet.http.HttpSession;
import?org.apache.log4j.Logger;
import?org.com.command.role.GoupdateRoleCmd;
public?class?SingleFilter?implements?Filter?{
private?static?Logger?log?=?Logger.getLogger(SingleFilter.class);
private?FilterConfig?filterConfig;
public?void?doFilter(ServletRequest?req?ServletResponse?res
FilterChain?chain)?throws?IOException?ServletException?{
HttpServletRequest?request?=?(HttpServletRequest)?req;
HttpServletResponse?response?=?(HttpServletResponse)?res;
HttpSession?session?=?request.getSession();
/**
?*?如果用戶沒有登陸,則登陸,并將登陸信息放到application,
?*?
?*?信息為用戶id,用戶sessionid,用戶登陸時間,登陸IP
?*?
?*?如果用戶已登陸,則每次請求要檢查application,
?*?
?*?一旦用戶id相同而sessionid不同,即表明該用戶在其它地方登陸,
?*?
?*?當前登陸無條件注銷
?*?
?*?注銷過程為:將當前session失效,轉到登陸頁面,
?*?
?*?提示用戶該用戶id已在哪臺機器什么時間登陸了,當前登陸已注銷
?*/
boolean?isLogin?=?session.getAttribute(“NAME“)?!=?null;
log.info(“----SingleFilter.isLogin?=?“+isLogin);
if?(isLogin)?{
String?username?=?(String)?session.getAttribute(“NAME“);
String?curSessionid?=?session.getId();
Map?single?=?(Map)?session.getAttribute(
“single“);
if?(single?==?null)?{
log.info(“----SingleFilter?single?==?null?:?“+single?==?null);
return;
}
Map?userMap?=?(Map)?single.get(username);
//?如果已經有登陸信息
if?(userMap?!=?null)?{
log.info(“----SingleFilter.userMap?!=?null“);
String?hisSesssionid?=?(String)?userMap.get(“sessionid“);
String?ip?=?(String)?userMap.get(“ip“);
String?date1?=?(String)?userMap.get(“date1“);
if?(!curSessionid.equals(hisSesssionid))?{
String?jspMess?=?username?+?“已于“?+?date1?+?“從“?+?ip
+?“登陸到了服務器上,當前登陸已被注銷!“;
request.setAttribute(“ERROR“?jspMess);
session.removeAttribute(“NAME“);
session.invalidate();
filterConfig.getServletContext().getRequestDispatcher(
“/main.jsp“).forward(request?response);
return;
}
log.info(“----SingleFilter.hisSessionid?not?null!“);
}
}
chain.doFilter(request?response);
}
public?void?destroy()?{
}
public?void?init(FilterConfig?filterConfig)?throws?ServletException?{
this.filterConfig?=?filterConfig;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????2802??2009-01-07?16:45??SingleFilter\SingleFilter.java
評論
共有 條評論