Dieser Artikel beschreibt die Methode der Java -Implementierung der Online -Benutzerüberwachungsfunktion basierend auf dem Servlet -Listener. Teilen Sie es für Ihre Referenz wie folgt weiter:
1. Analyse:
Um die Online -Anzahl von Personen einer Website zu machen, können Sie den ServletContextListener anhören. Wenn der Kontext der Webanwendung gestartet wird, fügen Sie eine Liste im ServletContext hinzu. Verwenden Sie es, um den online gespeicherten Benutzernamen vorzubereiten, und hören Sie dann den httpSessionAttributelistener durch. Wenn sich der Benutzer erfolgreich anmeldet, setzen Sie den Benutzernamen auf die Sitzung. Gleichzeitig wird die Benutzername -Methode in die Liste des ServletContext gesetzt und schließlich über das httpSessionListener angehört. Wenn sich der Benutzer aus der Sitzung abmeldet, wird der Benutzername aus der Liste der Liste im Anwendungskontextbereich gelöscht.
2. Dinge zu beachten
Während des Tests müssen Sie verschiedene Browser starten, um sich bei verschiedenen Benutzern anzumelden. Nur durch Klicken auf die Schaltfläche Abmelden können Sie Online -Benutzer reduzieren. Schließen Sie den Browser können Online -Benutzer nicht reduzieren.
3. Projektquellcode
(1) Java -Code
Onlinelistener -Klasse
Paket com.smalle.listener; import java.util.linkedlist; import java.util.list; import Javax.servlet.servletContext; import javax.servlet.servletContextevent; importieren Javax.ServletContextListener; javax.servlet.http.HttpSessionBindingEvent;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class OnlineListener implements ServletContextListener, HttpSessionAttributeListener, HttpSessionListener { private ServletContext application = null; // Methoden, die zu Beginn des Anwendungskontexts @Override public void kontextinitialisiert (servletContexevent e) {// Initialisieren eines Anwendungsobjekts Application = E.GetServletContext (); // Ein Listenattribut festlegen, um den Online -Benutzernamen zu speichern. } // Rückrufmethode beim Hinzufügen von Attributen zur Sitzung @Override public void Attributeded (httpSessionBindingEvent e) {// Die Liste der Benutzernamenliste <string> onlines = (Liste <string>) thaapplication.getatTribute ("Online"); if ("userername" .equals (e.getName ()) {onlines.add ((String) e.getValue ()); } // Die Spaltenanwendungseigenschaft der hinzugefügten Liste zurücksetzen. this.application.setAttribute ("Online", Onlines); } // Methoden, die Rückrufe bei der Sitzung zerstört haben. // Erhalten Sie den aktuellen Benutzernamen String username = (string) e.getSession (). GetAtTribute ("Benutzername"); // diesen Benutzer aus der Liste onlines.remove (Benutzername) löschen; // Die gelöschte Liste in die Anwendungseigenschaft zurücksetzen. this.application.setAttribute ("Online", Onlines); } public void sessioncreated (httpSessionEvent e) {} public void AttruterMoved (httpSessionBindingEvent e) {} public void AttributerePlace (httpSessionBindingEvent e) {}}LoginServlet -Klasse
Paket com.smalle.listener; import java.io.ioxception; import Java.io.printwriter; import Java.util.list; import Javax.servlet.servletException; import Javax.servlet.http.httpserd; Import Javax.Servlet.Httplet.http. javax.servlet.http.httpServletRequest; import javax.servlet.http.httpServletResponse; öffentliche Klasse LoginServlet erweitert HttpServlet {private statische endgültige lange Serialversionuid = 1L; public void dodget (httpServletRequest Request, httpServletResponse -Antwort) löst ServletException aus, ioException {this.dopost (request, Antwort); } public void dopost (httpServletRequest Request, httpServletResponse-Antwort) löst ServletException aus, ioException {request.setcharactercoding ("utf-8"); // Setzen Sie den Antwortinhaltstyp String username = request.getParameter ("Benutzername"); // Den Benutzernamen in den Anforderungsparameter abrufen // Hinzufügen der Sitzung der Sitzung die mordututeded -Methode in der httpSessionAttributelistener auszulösen, wenn (userername! } // Die Liste der Online -Benutzernamen in der Anwendungskontextliste <string> online = (Liste <string>) getServletContext (). GetAtTribute ("Online"); System.out.println ("LoginServlet" + online); Antwort.SetContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println (""); out.println ("<title> Benutzerliste </title>"); out.println (""); out.println ("Aktueller Benutzer ist:" + Benutzername); out.print ("<hr> <h3> Online -Benutzerliste </h3>"); int size = online == null? 0: online.size (); für (int i = 0; i <size; i ++) {if (i> 0) {out.println ("<br>"); } out.println (i + 1 + "." + online.get (i)); } // HINWEIS: Um die Link -URL -Out automatisch umzuschreiben out.println ("); out.println (" "); out.flush (); out.close ();}}LogoutServlet -Klasse
Paket com.smalle.listener; import java.io.ioxception; import Java.io.printwriter; import Java.util.list; import Javax.servlet.servletException; import Javax.servlet.http.httpserd; Import Javax.Servlet.Httplet.http. javax.servlet.http.httpServletResponse; öffentliche Klasse logoutServlet erweitert httpServlet {public void dodget (httpServletRequest Request, httpServletResponse -Antwort) löscht ServletException, IOException {this.dopost (Anfrage, Antwort, Antwort); } public void dopost (httpServletRequest Request, httpServletResponse-Antwort) löst ServletException aus, ioException {request.setcharactercoding ("utf-8"); // Legen Sie den Antworttyp des Antwortinhalts fest // Zerstöre die Sitzung, die methode sessionDestroyed im SessionLinstener wird ausgelöst. // Erhalten Sie die Liste der Online -Benutzername aus der Anwendungskontextliste <string> online = (Liste <string>) getServletContext (). GetAtTribute ("Online"); Antwort.SetContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println (""); out.println ("<title> Benutzerliste </title>"); out.println (""); out.println (""); out.print ("<h3> Online -Benutzerliste </h3>"); int size = online == null? 0: online.size (); für (int i = 0; i <size; i ++) {if (i> 0) {out.println ("<br>"); } out.println (i + 1 + "." + online.get (i)); } out.println ("<hr> <a href = '/' index.html/''> home </a>"); out.println (""); out.println (""); out.flush (); out.close (); }}(2) Web.xml -Code
<? XSI: Schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app-app-app-app-app- = <DILDE-NAME> testServlet </display-name> <Hörer> <Hörer-Klasse> com.smalle.listener.onlinelistener </Listener-Klasse> </Listener> <Servlet> <Servlet-name> LoginServlet </servlet-name> <Servlet-Class> com.malle.listener.loginservlet </servlet-class> </listener.logs.loginservlet </servlet-classe> </servlet-mapletser. <servlet-name> loginServlet </servlet-name> <URL-PATTERN>/loginListener. <servlet-name> logoutservlet </servlet-name> <url-pattern>/logoutListener </url-pufter> </servlet-mapping> <Welcome-File-List> <Welcome-File> Index.jsp </Welcome-File> </Welcome-File-List> </web-App>
(3) Präsentationsschichtcode
<!DOCTYPE html><html> <head> <title>index.html</title> <meta name="content-type" content="text/html; charset=UTF-8"> </head> <body> <form action="loginListener" method="post"> Username: <input type="text" name="username"> <input type="submit" value = "login"> <br> <br> </form> </body> </html>
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Zusammenfassung der Java -Netzwerk -Programmierkenntnisse", "Tutorials zu Java -Datenstrukturen und Algorithmen", "Zusammenfassung der Java -Operation Dom Node Skills", "Zusammenfassung der Java -Datei- und Directory Operation Skills" und "Summary Operation Dom Node Skills" und "Summary of Java Cache Operation Skills" und "Summary of Java Cache Operation Skills"
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.