Java webモニターの例の統計はオンライン人数です。


本論文の例では、Java web統計のオンライン人数表示の具体的なコードを共有しています。
1.実現機能
オンライン人数を統計します
一人当たりのsessionId、Ip、初登録時間を表示します。

2.運用モニターの種類
  • HttpSession
  • Servlet Request
  • 3.思想の実現
  • 各ユーザは一つのセッションに対応しているので、セッションが作成される度にnum+++;
  • は、ユーザークラス(sessionID、IP、Date)
  • を実現する。
  • IPアドレスを取得する方法はrequestを必要とするので、ServletRequestモニタ
  • を実現したいです。
  • の各要求は、ユーザの作成
  • に対応している。
  • は、すべてのユーザを一つのユーザーチェーンに置く
  • .チェーンテーブルをServletRequest Event.get Servlet Contect().set Attributeをグローバル変数
  • に設定します。
  • は、ホームチェーンを介してユーザ情報を読み出す。
  • 4.パッケージディレクトリ

    5.コード実現
    User
    
    package entity;
    
    public class User {
     private String sessionID;
     private String ip;
     private String firstTime;
    
     public String getSessionID() {
     return sessionID;
     }
    
     public void setSessionID(String sessionID) {
     this.sessionID = sessionID;
     }
    
     public String getIp() {
     return ip;
     }
    
     public void setIp(String ip) {
     this.ip = ip;
     }
    
     public String getFirstTime() {
     return firstTime;
     }
    
     public void setFirstTime(String firstTime) {
     this.firstTime = firstTime;
     }
    
    }
    MyHttp Session Listener
    
    package listenner;
    
    import java.util.ArrayList;
    
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpSessionEvent;
    import javax.servlet.http.HttpSessionListener;
    
    import entity.User;
    import util.SessionUtil;
    
    @WebListener
    public class MyHttpSessionListener implements HttpSessionListener {
    
     private int num = 0;//    
    
     public void sessionCreated(HttpSessionEvent se) {
     num++;
     se.getSession().getServletContext().setAttribute("number", num);
     }
    
     @SuppressWarnings("unchecked")
     public void sessionDestroyed(HttpSessionEvent se) {
     num--;
     se.getSession().getServletContext().setAttribute("number", num);
    
     //          ,             
     ArrayList<User> userlist = (ArrayList<User>) se.getSession().getServletContext().getAttribute("userlist");
     if (SessionUtil.getUserBySessionID(userlist, se.getSession().getId()) != null) {
      userlist.remove(SessionUtil.getUserBySessionID(userlist, se.getSession().getId()));
     }
     }
    
    }
    MyServeltRequest Listener
    
    package listenner;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    
    import javax.servlet.ServletRequestEvent;
    import javax.servlet.ServletRequestListener;
    import javax.servlet.annotation.WebListener;
    import javax.servlet.http.HttpServletRequest;
    
    import entity.User;
    import util.SessionUtil;
    
    @WebListener
    public class MyServeltRequestListener implements ServletRequestListener {
     @SuppressWarnings("unchecked")
     public void requestInitialized(ServletRequestEvent sre) {
    
     ArrayList<User> userlist=null; 
     //          ,    ,         
     userlist= (ArrayList<User>) sre.getServletContext().getAttribute("userlist");
     if (userlist == null) {
      userlist = new ArrayList<User>();
     }
    
    
     //  request  
     HttpServletRequest request = (HttpServletRequest) sre.getServletRequest();
     //  sessionID
     String sessionID = request.getSession().getId();
     //  sessionID        ,      ,         
     if (SessionUtil.getUserBySessionID(userlist, sessionID) == null) {
      User user = new User();
      user.setSessionID(sessionID);
      user.setFirstTime(new SimpleDateFormat("YYYY-MM-DD hh:mm:ss").format(new Date()));
      user.setIp(request.getRemoteAddr());
      userlist.add(user);
     }
     //          
     sre.getServletContext().setAttribute("userlist", userlist);
     }
    }
    getsUserBy Session ID
    
    package util;
    
    import java.util.ArrayList;
    
    import entity.User;
    
    public class SessionUtil {
    
     //   ,  session             
     public static User getUserBySessionID(ArrayList<User> userlist, String sessionID) {
     for (int i = 0; i < userlist.size(); i++) {
      User user=userlist.get(i);
      if (user.getSessionID().equals(sessionID)){
      return user;
      }
     }
     return null;
     }
    }
    index.jsp
    
    <%@page import="entity.User"%>
    <%@page import="java.util.ArrayList"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title></title>
    </head>
    <body>
           :${number}
     <hr>
     <%
     ArrayList<User> userlist = (ArrayList<User>) request.getServletContext().getAttribute("userlist");
     if (userlist != null) {
      for (int i = 0; i < userlist.size(); i++) {
    
      User user = userlist.get(i);
     %>
     sessionID:<%=user.getSessionID()%>
     <br>
     IP:<%=user.getIp()%>
     <br>
     FirstName:<%=user.getFirstTime()%>
     <hr>
     <%}}%>
    </body>
    </html>
    以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。