Đếm số người online trong JSP

Posted: 29/01/2012 in JSP
Tags: , ,

sau đây zstar hướng dẫn các bạn đếm số người online trong 1 trang JSP

đây chỉ là đếm đơn thuần số người truy cập, nếu trang web của bạn có sử dụng user account thì cần kết hợp với CSDL nữa

bước 1 : tạo 1 file SessionCounter .java tôi để trong package com.cuong.counter


package com.cuong.counter;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.ArrayList;

/**
*
* @author zstar
*/
public class SessionCounter implements HttpSessionListener {

private List sessions = new ArrayList();

public SessionCounter() {
}

public void sessionCreated(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.add(session.getId());

session.setAttribute("counter", this);
}

public void sessionDestroyed(HttpSessionEvent event) {
HttpSession session = event.getSession();
sessions.remove(session.getId());

session.setAttribute("counter", this);
}

public int getActiveSessionNumber() {
return sessions.size();
}
}

bước 2 : tôi đăng kí listenser trong web.xml (trong mục WEB-INF)

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>
com.cuong.counter.SessionCounter
</listener-class>
</listener>
</web-app>

chú ý đến thẻ <listener>, zstar đăng kí class SessionCounter trong đó

bước 3: tôi sử dụng trong  trang JSP , tạo newjsp.jsp với code như sau

<%--
Document   : newjsp
Created on : Jan 29, 2012, 11:08:12 AM
Author     : zstar
--%>

<%@page import="com.cuong.counter.SessionCounter"%>
<%@page contentType="text/html" 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>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
SessionCounter counter = (SessionCounter) session.getAttribute("counter");
request.getRemoteAddr();
%>
Number of online user(s): <%= counter.getActiveSessionNumber()%>
</body>
</html>

đã xong, bạn chạy newjsp.jsp để xem kết quả. muốn chính xác hơn thì bạn thiết lập lại session time out trong web.xml cho phù hợp

chúc vui vẻ ^^

Comments
  1. Khánh says:

    cho mình xin code đếm số lượt người onl có CSDL cái bạn ơi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s