著作権:帰属、紙ベースを作成するために他人を許可し、(同じライセンスで元のライセンス契約に基づいて用紙配布する必要がありますクリエイティブコモンズ)
問題:
どのようにオンライン番号(ユーザーが観光客を含む)に、ウェブサイトの利用者の統計情報を所有するには?
分析:
まず第一に、私は最初の分析でアイデアのような問題に会いました。
- どのような技術、サーバーへのユーザーアクセスを監視することができますか? (リスナー)
- これらの技術、リアルタイムのストレージ・サーバーのユーザー数が着陸するたびに使用しますか? (Javaの4つのドメインオブジェクト)
- ユーザーがクライアントにページ数を表示することができます技術を有する者? (EL式)
私は上記の知見を上げた場合、あなたは非常に理解していない、自分の百度で学習することをお勧めします。私は、比較的小規模なデモ、思考の列車を持っていました。
コードでは、非常に明確なプレゼンテーションがあります。
コアコンテンツ:
プロジェクトのディレクトリ構成は以下のとおりです。
まず、図中のjavawebプロジェクト、明確なプロジェクト構造を作成します。(1プロジェクト名を表し、3.jarパッケージ基本パッケージ(それをダウンロードするにはEL式公式サイト)、これはパッケージの.jarダウンロード(あるhttps://download.csdn.net/download/longyanchen/ 11250452))、予防策は、独自のサーバー上でプロジェクトをビルドし、その上にサーバーに直接プロジェクトを展開する必要があります。プロジェクト準備環境、私は説明しません。(いくつかの兄弟を防ぐ間違った方向に袋を置くために、私はすべてのパスを移動します)
InitServletContexListener.java(服务器初始化):
package com.cyl.count;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/*
初始化:
只有服务器的启动,才会创建servletContext对象。
用于监听servletContext创建,一旦创建servletContext创建,则设置servletContext中的count值为0;
*/
@WebListener
/*
这个注解的作用是启动监听,相当于在web.xml配置(
<listener>
<listener-class>com.cyl.count.InitServletContexListener</listener-class>
</listener>
*/
public class InitServletContexListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//获取ServletContext域对象
ServletContext servletContext = servletContextEvent.getServletContext();
//给ServletContext域对象,设置count=0
servletContext.setAttribute("count",0);
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
}
OnlineNumberHttpSessionListener.java(用户现在监听):
package com.cyl.count;
import javax.servlet.ServletContext;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
* @监听在线人数,监听session的创建和销毁
* 如果session创建 获取ServletContext中的count++,重新设置
* 如果session销毁 获取ServletContext中的count--,重新设置
*/
@WebListener
public class OnlineNumberHttpSessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
//1.获取session
HttpSession session = httpSessionEvent.getSession();
ServletContext servletContext = session.getServletContext();
//2.获取counnt值,加1
int count = (int) servletContext.getAttribute("count");
count++;
//3.把servlet存储到servletContext对象中
servletContext.setAttribute("count",count);
}
@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
//1.获取session
HttpSession session = httpSessionEvent.getSession();
ServletContext servletContext = session.getServletContext();
//2.获取counnt值,减1
int count = (int) servletContext.getAttribute("count");
count++;
//3.把servlet存储到servletContext对象中
servletContext.setAttribute("count",count);
}
}
index.jspを(ユーザーの数を表示):
<%--
Created by IntelliJ IDEA.
User: cyl
Date: 2019/6/19 0019
Time: 21:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>当前在线人数:${count}</h1>
</body>
</html>