使用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,用来统计当前在线用户数
相关文档:
package javatest_danny;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class pipeStreamTest {
public static void main(String[] args) {
try
{
&nbs ......
1.2.5.Method类:
Method代表某个类的一个方法,提供关于类或接口上单独某个方法的信息。所反映的方法可能是类方法或实例方法(包括抽象方法)。 这个类不难理解,它是用来封装反射类方法的一个类。
方法
描述
public String getName()
返回此 Method 对象表示的方法名称
public Object invoke(Object obj,Object... ......
一、CORE JAVA
内容:
Java的面向对象的编程语言的特性的地方, 比如继承,构造器,抽象类,接口,方法的多态,重载,覆盖,垃圾回收,Java的异常处理机制,文件流I/O,OOP,OOD等面向对象设计。
资料:
《Thinking in Java》Sun 公司的《Tutorial》
二、基于JDK的java基础类库
内容:
最核心的只有4个:
ja ......
根据制定路径,可以获取当前正在操作的文件的大小,容量为byte.
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileByte {
private String filePath = "D:\\test.mdb";
private void getFileByte(){
& ......
一种是继承自Thread类.Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员通过覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是通过调用 Thread 的 start() 函数,该函数再调用 run()。
&nb ......