Struts2实现简单的在线人数统计
用Strust2框架的知识简单实现一个统计在线人数的问题。
1 搭建开发环境;(配置文件,jar包等问题)
2 index.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>Insert title here</title>
</head>
<body> <!-- <a href="product_input.action">welcome!</a>
<br><br> -->
<a href="login.action">注册页面</a>
<br><br>
</body>
</html>
3 login.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>Insert title here</title>
</head>
<body>
<form action="user-login.action" method="post">
username:<input type="text" name="username"/>
<br><br>
<input type="Submit" value="Submit"/>
</form>
</body>
</html>
4 success.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>Insert title here</title>
</head>
<body>
<h2>登陆成功!</h2>
<br><br>
Welcome:${sessionScope.username }
<br><br> 当前在线人数:${applicationScope.count }
<br><br> <a href="user-logout.action">退出登录</a>
<br><br> </body>
</html>
5 logout.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>Insert title here</title>
</head>
<body>
<h2>退出成功!</h2>
--当前人数:${count }
<br><br>
</body>
</html>
6 UserAction.java
package com.exe.login; 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 String username;
public void setName(String username) {
this.username = username;
} //退出
public String logout(){
Integer count = (Integer)application.get("count");
if(count==null)
count=0; if(count!= null && count > 0){
count--;
application.put("count", count);
} //使session失效
((SessionMap)session).invalidate();
System.out.println("退出一个人, 当前在线人数:"+count);
return "logout-success";
} public String login(){
int index=0;
//存储用户信息,放入Session域中
//1 获取session:实现SessionAware接口;
//2 获取登录信息,通过setter方法;
//3 将用户信息存储在session域中;
session.put("username", username); //1 获取当前在线人数
Integer count = (Integer)application.get("count");
if(count==null)
count=0;
//2 人数+1
count++;
//3 存储登陆人数
application.put("count", count);
System.out.println("UserAction 当前在线人数:"+count); return "login-success";
} private Map<String,Object> session; @Override
public void setSession(Map<String, Object> session) {
this.session=session;
} private Map<String,Object> application; @Override
public void setApplication(Map<String, Object> application) {
this.application = application;
}
}
7 Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 2 -->
<package name="login" extends="struts-default" namespace="/">
<action name="login">
<result>/WEB-INF/exe2/login.jsp</result>
</action> <action name="user-login" class="com.exe.login.UserAction" method="login">
<result name="login-success">/WEB-INF/exe2/success.jsp</result>
</action> <action name="user-logout" class="com.exe.login.UserAction" method="logout">
<result name="logout-success">/WEB-INF/exe2/logout.jsp</result>
</action> </package> <!-- 1 -->
<package name="pro" extends="struts-default">
<action name="product_input">
<result>/WEB-INF/pages/input.jsp</result>
</action> <action name="product-save" class="com.exe.pro.Product" method="save">
<result name="show">/WEB-INF/pages/show.jsp</result>
</action>
</package>
</struts>
Struts2实现简单的在线人数统计的更多相关文章
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-【过滤器+Cache】
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(40)-精准在线人数统计实现-[过滤器+Cache] 系列目录 上次的探讨没有任何结果,我浏览了大量的文章 ...
- 1.0、Struts2的简单搭建方法
一.Struts2:是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet:用于jsp页面与Java代码之间的交互. 1.核心:Filter拦截器,对所有的请求进行拦截. 2.工作 ...
- 用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
在线人数统计方面的实现,最初我的想法是,管理session,如果session销毁了就减少,如果登陆用户了就新增一个,但是如果是用户非法退出,如:未注销,关闭浏览器等,这个用户的session是管理不 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(39)-在线人数统计探讨 系列目录 基于web的网站在线统计一直处于不是很精准的状态!基本上没有一种方法可 ...
- struts2.0简单教程
Struts2.0简单配置教程: 在Eclipse中配置Struts2 步骤一:首先打开java ee并建立一个动态网站项目,我建立的项目名为TestDemo,如下图: 建立之后可在左侧发现工程,展开 ...
- HttpsessionListener 实现在线人数统计
最近在学servlet jsp,用的林信良先生的 jsp&servlet 这本书,在第五章有道在线人数统计的课后题完成,做一次记录. 实际效果: 一:用户类: package cc.openh ...
- 超简单的qps统计方法(推荐)【转】
统计最近N秒内的QPS值(包括每秒select,insert等值) mysql> select variable_name,sum(per_sec) as qps from (select st ...
- 在线人数统计session管理
下午比较闲(其实今天都很闲),想了一下在线人数统计方面的实现,上网找了下这方面的知识,最初我的想法是,管理session,如果session销毁了就减少,如果登陆用户了就新增一个,但是如果是用户非法退 ...
- 用python实现简单EXCEL数据统计的实例
用python实现简单EXCEL数据统计的实例 下面小编就为大家带来一篇用python实现简单EXCEL数据统计的实例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 任 ...
随机推荐
- Clojure学习笔记(二)——函数式编程
定义 “函数式编程”是一种编程范式(programming paradigm),即如何编写程序的方法论.主要思想是把运算过程尽量写成一系列嵌套的函数调用. 举例来说,现在有这样一个数学表达式: (1 ...
- Load Runner11录制脚本出现乱码的解决方法
方法一: 1.录制的脚本出现乱码 Go to Vugen -> Tools -> Recording Options -> Advancedb) Check the option ...
- setInterval和setTimeout的区别
setInterval会每隔指定的毫秒数后反复执行指定代码. setTimeout只会在指定的毫秒数后执行一次指定代码. setInterval的用法: // 创建(创建后即开始计时) var int ...
- css实现自适应宽度布局
1.实现左侧宽度固定,右侧全屏自适应. body{margin:0;padding:0} .wrap{ width:100%; float:left} .content{ height:300px;b ...
- iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序
iOS开发UI篇—使用嵌套模型完成的一个简单汽车图标展示程序 一.plist文件和项目结构图 说明:这是一个嵌套模型的示例 二.代码示例: YYcarsgroup.h文件代码: // // YYcar ...
- 连接到CentOS(Linux)服务器ssh、mysql缓慢
现象: 服务器163与服务器164在同一机柜,双绞线直接连接,从办公室或者服务器163去连机服务器164的ssh.mysql均缓慢,让机房人员查了,无果.而164却正常. 最后发现两个机器/etc/r ...
- 服务器端与客户端TCP连接入门(二)
1.服务器端程序 package Socket; import java.io.BufferedReader; import java.io.IOException; import java.io.I ...
- Android 源码下载
一直想尝试android源码的编译,这两天正好海思代码的编译也需要ubuntu环境,于是安装了ubuntu 12.04,安装时选了语言为中文,因此下面很多状态及错误报告都是中文了,另外分配了4G sw ...
- Visual Studio 编译项目失败,提示找不到文件
博客地址:http://blog.csdn.net/FoxDave 今天碰到了一个蠢问题,虽然咱们正常情况下是遇不到的,但这确实是个应该注意的地方,所以简单记录一下. Visual Studio ...
- Using Interface Builder记录
1.interface builder的作用主要是用来设计视图,文件的拓展名诶.storyboard或者.xib :这两文件的区别是,.xib文件只能设计一个视图控制器,也就只能显示一个视图,.sto ...