日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 登录下线_java web中Listener的实现(实现用户在线统计数量和强制用户下线)...

發(fā)布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 登录下线_java web中Listener的实现(实现用户在线统计数量和强制用户下线)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、實現(xiàn)的具體功能

(1)實現(xiàn)用戶在線數(shù)量的統(tǒng)計,并顯示在頁面上。

(2)實現(xiàn)強制用戶下線的功能。創(chuàng)建一個超鏈接,用于實現(xiàn)強制用戶下線的功能。

(3)監(jiān)聽session的創(chuàng)建和銷毀。

二、代碼實現(xiàn)

(1)主頁面:index.jsp。

pageEncoding="utf-8"%>

Insert title here

用戶在線列表數(shù)量:${userTable.size()}

用戶信息
${user.key }踢你下線

(2)服務(wù)器監(jiān)聽器:SCListener.java文件。

package com.listener;

import java.util.Hashtable;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.annotation.WebListener;

import javax.servlet.http.HttpSession;

/**

* Application Lifecycle Listener implementation class SCListener

*

*/

@WebListener

public class SCListener implements ServletContextListener {

//在線用戶數(shù)量sessionId , session

private static Hashtable userTable;

/**

* Default constructor.

*/

public SCListener() {

// TODO Auto-generated constructor stub

}

/**

* @see ServletContextListener#contextDestroyed(ServletContextEvent)

*/

public void contextDestroyed(ServletContextEvent arg0) {

// TODO Auto-generated method stub

//服務(wù)器關(guān)閉了

System.out.println("服務(wù)器關(guān)閉了......");

}

/**

* @see ServletContextListener#contextInitialized(ServletContextEvent)

*/

public void contextInitialized(ServletContextEvent sre) {

// TODO Auto-generated method stub

//服務(wù)器啟動

System.out.println("服務(wù)器啟動了......");

//創(chuàng)建用戶在線列表

userTable = new Hashtable();

//放入全局對象,第一個userTable的Key

sre.getServletContext().setAttribute("userTable",userTable );

}

}

(3)UserListener.java文件。

package com.listener;

import java.util.Hashtable;

import javax.servlet.ServletContext;

import javax.servlet.annotation.WebListener;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpSessionEvent;

import javax.servlet.http.HttpSessionListener;

/**

* Application Lifecycle Listener implementation class UserListener

*

*/

@WebListener

public class UserListener implements HttpSessionListener {

/**

* Default constructor.

*/

public UserListener() {

// TODO Auto-generated constructor stub

}

/**

* @see HttpSessionListener#sessionCreated(HttpSessionEvent)

*/

public void sessionCreated(HttpSessionEvent se) {

// TODO Auto-generated method stub

System.out.println("session創(chuàng)建了");

//獲取全局對象

ServletContext sc = se.getSession().getServletContext();

//獲取用戶列表

Hashtable userTable = (Hashtable)sc.getAttribute("userTable");

//獲取sessionId

String sid = se.getSession().getId();

//用戶session信息添加到用戶列表

userTable.put(sid, se.getSession());

System.out.println("用戶在線數(shù)量:"+userTable.size());

}

/**

* @see HttpSessionListener#sessionDestroyed(HttpSessionEvent)

*/

public void sessionDestroyed(HttpSessionEvent se) {

// TODO Auto-generated method stub

System.out.println("session銷毀了");

ServletContext sc = se.getSession().getServletContext();

//獲取用戶列表

Hashtable userTable = (Hashtable)sc.getAttribute("userTable");

//獲取sessionId

String sid = se.getSession().getId();

//移除用戶列表中的用戶

userTable.remove(sid);

}

}

(4)交互層用于實現(xiàn)強制用戶下線的功能:KickUser.java文件。

package com.servlet;

import java.io.IOException;

import java.util.Hashtable;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

/**

* Servlet implementation class KickUser

*/

@WebServlet("/KickUser")

public class KickUser extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public KickUser() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//獲取Id

String sid = request.getParameter("sid");

//獲取全局對象

ServletContext sc= request.getServletContext();

//獲取用戶列表

Hashtable userTable = (Hashtable)sc.getAttribute("userTable");

if(userTable.get(sid) != null) {

//銷毀session

userTable.get(sid).invalidate();

}

response.sendRedirect("index.jsp");

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

doGet(request, response);

}

}

三、運行結(jié)果

(1)用不同的瀏覽器打開,用戶在線數(shù)就會增加,然后進行測試。

一只小小的螞蟻

發(fā)布了45 篇原創(chuàng)文章 · 獲贊 3 · 訪問量 3048

私信

關(guān)注

標簽:web,java,用戶,userTable,Hashtable,import,servlet,javax

來源: https://blog.csdn.net/qq_44863179/article/details/104483179

總結(jié)

以上是生活随笔為你收集整理的java 登录下线_java web中Listener的实现(实现用户在线统计数量和强制用户下线)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。