使用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,用来统计当前在线用户数
相关文档:
正则表达式是用来校验文本框中所输入的值是否匹配。一般在swing里面和js脚本校验中用得蛮多的。
喜欢上正则是在一次做小数点的验证上,就是要判断输入的值的长度在5位,可以有小数点。如果不用正则,那么我得判断小数点是不是只有一个,小数点是不是在第一位,是不是在最后一位,那些情况都要排除的。当然,这样做一下,可 ......
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 ......
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 ......
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
......
一种是继承自Thread类.Thread 类是一个具体的类,即不是抽象类,该类封装了线程的行为。要创建一个线程,程序员必须创建一个从 Thread 类导出的新类。程序员通过覆盖 Thread 的 run() 函数来完成有用的工作。用户并不直接调用此函数;而是通过调用 Thread 的 start() 函数,该函数再调用 run()。
&nb ......