前几天,网上找了些朋友的资料,做了一个小功能,验证用户是否重复登录。
原理就是:每一个用户,登录前有一个验证,当第一次登录时,会把其session信息,添加到一个特定的静态变量中。当第二次登录时,验证到静态变量中存在该用户的信息,就表示为重复登录。
jsp代码,一个form表单提交:
-
<form action="/struts2upload/system/login/reLogin.action"
-
method="post">
-
用户名:
-
<input type="text" id="txtUser" name="txtUser" value="" />
-
密 码:
-
<input type="text" id="txtPass" name="txtPass" value="" />
-
<input type="submit" id="subOk" value="确定" />
-
</form>
struts2配置:
-
<action name="reLogin" class="userLoginAction" method="reLogin">
-
<result name="input" type="redirect">/relogin.jsp</result>
-
<result name="success" type="redirect">/ok.jsp</result>
-
</action>
action代码:
-
-
-
-
public String reLogin() {
-
String userId = this.getTxtUser();
-
UserInfo user = new UserInfo();
-
user.setUserId(userId);
-
-
Boolean hasLogin = SessionUserListener.checkIfHasLogin(user);
-
-
if (hasLogin) {
-
System.out.println(user.getUserId()+"已经登录到本系统。");
-
return "input";
-
-
} else {
-
-
ServletActionContext.getRequest().getSession().setAttribute("userInfo", user);
-
-
if (SessionUserListener.containsKey(ServletActionContext.getRequest().getSession().getId())) {
-
SessionUserListener.removeSession(ServletActionContext.getRequest().getSession().getId());
-
}
-
-
SessionUserListener.addUserSession(ServletActionContext.getRequest().getSession());
-
}
-
return "success";
-
}
session监听类:
-
发表于 2020-06-28 02:40:27
- 阅读 ( 775 )
- 分类: