English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaEE-Online-Zählsystem für die Anzahl der Benutzer

Dieser Blog ist eine Zusammenfassung über Filter-, Listener- und Servlet-Technologien und realisiert einfache Funktionen wie die Anzeige der Anzahl der Online-Besucher, detaillierte Informationen über Online-Besucher und die Funktion, einen Benutzer auszuschließen

以下为详细代码

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
 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_3_0.xsd">
 <display-name></display-name> 
 <filter
 <filter-name>character</filter-name>
 <filter-class>cn.hncu.filter.CharacterFilter</filter-class>
 <init-param>
  <param-name>charset</param-name>
  <param-value>utf-8</param-value>
 </init-param>
 </filter>
 <filter
 <filter-name>login</filter-name>
 <filter-class>cn.hncu.filter.LoginFilter</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>character</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
 <filter-mapping>
 <filter-name>login</filter-name>
 <url-pattern>/servlet/*</url-pattern>
 <url-pattern>/jsps/*</url-pattern>
 <dispatcher>REQUEST</dispatcher>
 <dispatcher>FORWARD</dispatcher>
 </filter-mapping>
 <listener
 <listener-class>cn.hncu.listener.MySessionListener</listener-class>
 </listener>
 <servlet>
 <servlet-name>LoginServlet</servlet-name>
 <servlet-class>cn.hncu.servlet.LoginServlet</servlet-class>
 </servlet>
 <servlet>
 <servlet-name>ShowServlet</servlet-name>
 <servlet-class>cn.hncu.servlet.ShowServlet</servlet-class>
 </servlet>
 <servlet>
 <description>This is the description of my J2EE component</description>
 <display-name>This is the display name of my J2EE component</display-name>
 <servlet-name>KickOutServlet</servlet-name>
 <servlet-class>cn.hncu.servlet.KickOutServlet</servlet-class>
 </servlet>
 <servlet>
 <description>This is the description of my J2EE component</description>
 <display-name>This is the display name of my J2EE component</display-name>
 <servlet-name>LoginOutServlet</servlet-name>
 <servlet-class>cn.hncu.servlet.LoginOutServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <servlet-name>LoginServlet</servlet-name>
 <url-pattern>/LoginServlet</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
 <servlet-name>ShowServlet</servlet-name>
 <url-pattern>/servlet/ShowServlet</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
 <servlet-name>KickOutServlet</servlet-name>
 <url-pattern>/servlet/KickOutServlet</url-pattern>
 </servlet-mapping>
 <servlet-mapping>
 <servlet-name>LoginOutServlet</servlet-name>
 <url-pattern>/servlet/LoginOutServlet</url-pattern>
 </servlet-mapping>
 <welcome-file-list>
 <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>
</web-app>

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <title>在线人信息管理</title>
 </head>
 <body>
 <h2>在线人信息管理</h2>
 <h3>会员登录</h3>
 <c:if test="${ empty sessionScope.user.name}" var="boo">
  <form action='<c:url value="/LoginServlet"></c:url>'>
   姓名:<input type="text" name="name"><br/>
    <input type="submit" value="登录"><br/>
  </form>
 </c:if>
 <c:if test="${!boo}" >
  欢迎回来,${ sessionScope.user.name}
  <c:if test="${ sessionScope.user.admin}" var="bo">
   管理员
  </c:if>
  <c:if test="${!bo}" >
   会员
  </c:if>
 </c:if>
 <br/>
  <c:if test="${!boo}" var="boo">
  <a href='<c:url value="/servlet/ShowServlet"/>'>查看在线人信息</a><br/>
  <a href='<c:url value="/servlet/LoginOutServlet"/>'>安全退出</a><br/>
  </c:if>
 </body>
</html>

/jsps/show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Online-Nutzerinformationen</title>
<style type="text/css">
 table {
  farbe: grün;
  rand: 1px fest blau;
  rand-kollabieren: kollabieren;
  breite: 500px;
  rand: auto;
 }
 td {
  rand: 1px fest blau;
 }
 th {
  rand: 1px fest blau;
 }
 body {
  text-ausrichten: center;
 }
</style>
 <meta http-equiv="refresh" content="3">
</head>
<body>
 <table>
  <tr>
   <th>Name</th>
   <th>Online-Zeit</th>
   <th>Letzter Zugriffzeitpunkt</th>
   <th>IP</th>
   <th>Operation</th>
  </tr>
  <c:forEach items="${requestScope.onlines}" var="online">
  <tr>
   <td>
    <c:if test="${!empty online.user }" var="boo">
      ${online.user.name }
    </c:if>
    <c:if test="${empty online.user }">
      Gast
    </c:if>
   </td>
   <td>${online.createTime }</td>
   <td>${online.lastAccessedTime }</td>
   <td>${online.ip }</td>
   <td>
    <c:if test="${online.user!=sessionScope.user }"> 
     <c:if test="${!online.user.admin&&boo}">
       <a href='<c:url value="/servlet/KickOutServlet?id=${online.id}"/>' Ausweisen</a>
     </c:if>
    </c:if>
   </td>
  </tr>
  </c:forEach>
 </table>
</body>
</html>

User.java (Wertobjekt)

package cn.hncu.domain;
public class User {
 private String name;
 private boolean admin;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public boolean isAdmin() {
  return admin;
 }
 public void setAdmin(boolean admin) {
  this.admin = admin;
 }
 @Override
 public String toString() {
  return "+"User [name=" + name + ", admin=" + admin + "]";
 }
}

MySessionListener.java(Listener)

package cn.hncu.listener;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class MySessionListener implements HttpSessionListener{
 @Override
 public void sessionCreated(HttpSessionEvent se) {
  Map<String, HttpSession> onlines= (Map<String, HttpSession>) se.getSession().getServletContext().getAttribute("onlines");
  if(onlines==null){
   onlines=Collections.synchronizedMap(new HashMap<String, HttpSession>());//Synchronisations-Schloss für das Map hinzufügen
   se.getSession().getServletContext().setAttribute("onlines",onlines);
  }
  onlines.put(se.getSession().getId(), se.getSession());
 }
 @Override
 public void sessionDestroyed(HttpSessionEvent se) {
  Map<String, HttpSession> onlines= (Map<String, HttpSession>) se.getSession().getServletContext().getAttribute("onlines");
  if(onlines.containsKey(se.getSession().getId())){
   onlines.remove(se.getSession().getId());
  }
 }
}

CharacterFilter.java(字符过滤器)

package cn.hncu.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class CharacterFilter implements Filter {
 private String charset;
 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
  charset=filterConfig.getInitParameter("charset");
 }
 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  request.setCharacterEncoding(charset);
  response.setCharacterEncoding(charset);
  HttpServletRequest req=(HttpServletRequest) request;
  if(req.getSession().getAttribute("ip")==null){
   req.getSession().setAttribute("ip", req.getRemoteAddr());
  }
  chain.doFilter(request, response);
 }
 @Override
 public void destroy() {
 }
}

LoginFilter.java(防止游客乱访问过滤器)

package cn.hncu.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginFilter implements Filter {
 @Override
 public void init(FilterConfig filterConfig) throws ServletException {
 }
 @Override
 public void doFilter(ServletRequest request, ServletResponse response,
   FilterChain chain) throws IOException, ServletException {
  HttpServletRequest req=(HttpServletRequest) request;
  if(req.getSession().getAttribute("user")==null){
   ((HttpServletResponse)response).sendRedirect(req.getContextPath())+"/index.jsp");
   return;
  }
  chain.doFilter(request, response);
 }
 @Override
 public void destroy() {
 }
}

LoginServlet.java

package cn.hncu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hncu.domain.User;
public class LoginServlet extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String name = request.getParameter("name");
  User user = (User) request.getSession().getAttribute("user");
  if (user == null && name != null && name.trim().length() > 0) {//User verpacken
   user = new User();
   user.setName(name);
   if(name.equals("admin")){
    user.setAdmin(true);
   }
  }
  request.getSession().setAttribute("user", user);
  response.sendRedirect(request.getContextPath())+"/index.jsp");
 }
}

ShowServlet.java

package cn.hncu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class ShowServlet extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  Map<String, HttpSession> onlines = (Map<String, HttpSession>) request.getServletContext().getAttribute("onlines");
  List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();//Online in List verpacken
  if (onlines != null) {
   Iterator<HttpSession> it = onlines.values().iterator();
   while (it.hasNext()) {
    HttpSession s = it.next();
    Map<String, Object> map = new HashMap<String, Object>();
    map.put("id", s.getId());
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy");-MM-dd HH:mm:ss);
    map.put("createTime", sdf.format(new Date(s.getCreationTime())));
    map.put("lastAccessedTime", sdf.format(new Date(s.getLastAccessedTime())));
    map.put("ip", s.getAttribute("ip"));//ip information is supplemented in characterFilter
    map.put("user", s.getAttribute("user"));
    list.add(map);
   }
  }
  request.setAttribute("onlines", list);
  request.getRequestDispatcher("/jsps/show.jsp.forward(request, response);
 }
}

KickOutServlet.java

package cn.hncu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class KickOutServlet extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  String id = request.getParameter("id");
  Map<String, HttpSession> onlines = (Map<String, HttpSession>) request.getServletContext().getAttribute("onlines");
  if (onlines != null) {
   if (onlines.containsKey(id)) {
    onlines.get(id).invalidate();
   }
  }
  request.getRequestDispatcher("/servlet/ShowServlet.forward(request, response);
 }
}

LoginOutServlet.java

package cn.hncu.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginOutServlet extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  doPost(request, response);
 }
  public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   request.getSession().invalidate();
   response.sendRedirect(request.getContextPath())+"/index.jsp");
 }
}

That's all for this article. I hope it will be helpful to everyone's learning and also hope everyone will support the Yelling Tutorial.

Declaration: The content of this article is from the Internet, and the copyright belongs to the original author. The content is contributed and uploaded by Internet users spontaneously. This website does not own the copyright, has not been manually edited, and does not assume any relevant legal liability. If you find any content suspected of copyright infringement, please send an email to: notice#oldtoolbag.com (Please replace # with @ when sending an email to report abuse, and provide relevant evidence. Once verified, this site will immediately delete the infringing content.)

Gefällt Ihnen