使用java 监听器实现在线人数统计
1. 在工程中创建监听类SessionListener 并且实现HttpSessionListener接口,代码如下
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionListener implements HttpSessionListener {
private static int count = 0;
public void sessionCreated(HttpSessionEvent se) {
count++;
System.out.println("session创建:" + new java.util.Date());
}
public void sessionDestroyed(HttpSessionEvent se) {
count--;
System.out.println("session销毁:" + new java.util.Date());
}
public static int getCount() {
return count;
}
}
2. 配置web.xml
<listener>
<description>session监听器</description>
<listener-class>com.xxx.SessionListener</listener-class>
</listener>
3. 在JSP页面中显示在线人数
<%
int count=com.xxx.SessionListener.getCount();
out.println("在线人数:"+count);
%>
注意:servlet中对session的监听有很多接口,功能很灵活,最常用的是监听Session和Attribute。这里要澄清一下概念,servlet中的session监听和Attribute监听含义有差别,session监听指的不是我们一般所理解的放置一个session或者销毁一个session,这是Attribute监听的功能,因为servlet中放置session的语法是session.setAttribute(“session名”,要放入的对象)。而session监听,监听的是HTTP连接,只要有用户与server连接,就算连接的是一个空白的jsp页面,也会触发session事件,所以此处的session实际上指的是connection,用来统计当前在线用户数
相关文档:
Java NIO API详解
在JDK
1.4以前,Java的IO操作集中在java.io这个包中,是基于流的阻塞(blocking)API。对于大多数应用来说,这样的API使用很方
便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK 1.4起,NIO
API作为一个基于缓冲区,并能提供非阻塞(non-blo ......
1.计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year); //year 为 int
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0
int day=time.getActualMaximum(Calendar ......
import java.io.File;
import java.text.DecimalFormat;
import java.io.FileInputStream;
public class GetFileSize
{
public long getFileSizes(File f) throws Exception{//取得文件大小
long s=0;
......
jdk,j2ee,j2se,j2me的概念区别
1.
JDK是Java development toolkit,相当于是Java的库函数,是编译,运行java程序的工具包。
J2EE是Java 2 enterprise edition是Java的一种企业版用于企业级的应用服务开发
J2SE是Java 2 standard edition是Java的标准版,用于标准的应用开发
J2ME是Java 2 Micro Edition是Java的微型版,常 ......
一种是继承自Thread类.Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员通过覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是通过调用 Thread 的 start() 函数,该函数再调用 run()。
&nb ......