统计用户在线人数案例
1. 添加JSP页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆</title>
</head>
<body>
<h4>可用账户:rabbitx/123456</h4>
<hr/>
<form action="login.do" method="POST">
<fieldset>
<legend>登陆</legend>
账户:<input type="text" name="username">
密码:<input type="password" name="password">
<input type="submit" value="登陆">
</fieldset>
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>在线用户数统计</title>
</head>
<body>
<h2>当前用户:${sessionScope.username}</h2>
<h2>在线用户数:${applicationScope.count}</h2>
<a href="logout.do">注销</a>
</body>
</html>
2. 添加Action
package org.rabbitx.web.struts2.user.action;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.SessionAware;
public class UserAction implements SessionAware,ApplicationAware{
private Map<String, Object> session;
private Map<String, Object> application;
private String username;
private String password;
@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}
@Override
public void setApplication(Map<String, Object> application) {
this.application = application;
}
public String login()
{
if("rabbitx".equals(username) && "123456".equals(password))
{
session.put("username", username);
Integer count = (Integer)application.get("count");
if(null == count)
{
count = 0;
}
application.put("count", ++count);
return "success";
}else
{
return "fail";
}
}
@SuppressWarnings("rawtypes")
public String logout()
{
Integer count = (Integer)application.get("count");
if(count != null && count > 0)
{
application.put("count", --count);
}
((SessionMap)session).invalidate();
System.out.println("session invalidate ...");
return "success";
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
3. 配置Action
<package name="online-user-statistic" extends="struts-default">
<action name="login" class="org.rabbitx.web.struts2.user.action.UserAction" method="login">
<result name="success">/statistics/homepage.jsp</result>
<result name="fail">/statistics/login.jsp</result>
</action>
<action name="logout" class="org.rabbitx.web.struts2.user.action.UserAction" method="logout">
<result name="success">/statistics/login.jsp</result>
<result name="fail">/statistics/login.jsp</result>
</action>
</package>
本文介绍了一个使用Struts2框架实现的用户在线统计功能,包括登录验证、在线人数统计及注销过程。通过JSP页面展示用户登录界面,并在成功登录后显示当前在线用户数量。
1541

被折叠的 条评论
为什么被折叠?



