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

نظام إدارة عدد المستخدمين عبر الإنترنت في JavaEE

هذا المقال هو تلخيص لفنيات filter،listener وservlet، ويقوم بتنفيذ وظائف بسيطة مثل عرض عدد الأشخاص المتصلين، تفاصيل الأشخاص المتصلين، وإزالة المستخدمين من قبل المسؤول

下面是详细代码

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>هذا هو الوصف لمكون J2EE الخاص بي</description>
 <display-name>هذا هو اسم العرض لمكون J2EE الخاص بي</display-name>
 <servlet-name>KickOutServlet</servlet-name>
 <servlet-class>cn.hncu.servlet.KickOutServlet</servlet-class>
 </servlet>
 <servlet>
 <description>هذا هو الوصف لمكون J2EE الخاص بي</description>
 <display-name>هذا هو اسم العرض لمكون J2EE الخاص بي</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>معلومات الأشخاص المتصلين</title>
<style type="text/css">
 table {
  اللون: أخضر;
  حافة: 1px حافة سفلية زرقاء;
  حافة: انهيار;
  عرض: 500px;
  السماحية: تلقائي;
 }
 td {
  حافة: 1px حافة سفلية زرقاء;
 }
 th {
  حافة: 1px حافة سفلية زرقاء;
 }
 body {
  text-align: center;
 }
</style>
 <meta http-equiv="refresh" content="3">
</head>
<body>
 <table>
  <tr>
   <th>姓名</th>
   <th>上线时间</th>
   <th>最后访问时间</th>
   <th>ip</th>
   <th>操作</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 }">
      游客
    </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 }"/>' >踢出</a>
     </c:if>
    </c:if>
   </td>
  </tr>
  </c:forEach>
 </table>
</body>
</html>

User.java(值对象)

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(监听器)

package cn.hncu.listener;
import java.util.Collections;
import java.util.HashMap;
استيراد java.util.Map;
استيراد 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>());//对map进行加上同步锁
   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;
استيراد java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
استيراد 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;
استيراد java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
استيراد 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

باكجيت cn.hncu.servlet;
استيراد java.io.IOException;
استيراد java.io.PrintWriter;
استيراد 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
   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

باكجيت cn.hncu.servlet;
استيراد java.io.IOException;
استيراد 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;
استيراد java.util.Map;
استيراد javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
استيراد 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封装成list
  إذا (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 معلومات في characterFilter تكميلية
    map.put("user", s.getAttribute("user"));
    list.add(map);
   }
  }
  request.setAttribute("onlines", list);
  request.getRequestDispatcher("/jsps/show.jsp").forward(request, response);
 }
}

KickOutServlet.java

باكجيت cn.hncu.servlet;
استيراد java.io.IOException;
استيراد java.io.PrintWriter;
استيراد java.util.Map;
استيراد javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
استيراد 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");
  إذا (onlines!=null) {
   إذا (onlines.containsKey(id)) {
    onlines.get(id).invalidate();
   }
  }
  request.getRequestDispatcher("/servlet/ShowServlet").forward(request, response);
 }
}

LoginOutServlet.java

باكجيت cn.hncu.servlet;
استيراد java.io.IOException;
استيراد java.io.PrintWriter;
استيراد 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");
 }
}

هذا هو نهاية محتوى هذا المقال، نأمل أن يساعد هذا الجميع في التعلم، ونأمل أيضًا أن يتلقى دعمًا كبيرًا من دليل التدريب.

بيان: محتوى هذا المقال تم جمعه من الإنترنت، ملكية حقوق الطبع والنشر لصاحب الملكية، تم جمع المحتوى من قبل المستخدمين على الإنترنت الذين قدموا المساهمة بشكل تلقائي وتحميلها، ويتمتع هذا الموقع بلا حقوق ملكية، ولا يتم تعديل المحتوى بشكل يدوي، ولا يتحمل الموقع أي مسؤولية قانونية مرتبطة بذلك. إذا اكتشفت محتوى يشتبه في حقوق الطبع والنشر، فأنت مرحب بك في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال '#' بـ '@') للإبلاغ، وقدم الدليل الداعم، وإذا تم التحقق من ذلك، سيتم حذف المحتوى المزعوم فورًا.

من المحتمل أن تفضله