In diesem Artikel wird hauptsächlich ein Beispiel für die Verwendung von Hörern mit Java vorgestellt, um die Anzahl der Personen online auf einer Website zu zählen. Es hat einen bestimmten Referenzwert. Freunde in Not können darüber lernen.
(1) Erstellen Sie eine Hörer -Implementierungsklasse
Um die Anzahl der Personen online auf einer Website grob zu zählen, können Sie zunächst den ServletContextListener anhören. Wenn der Kontext der Webanwendung gestartet wird, fügen Sie eine Liste im ServletContext hinzu, um den im Online gespeicherten Benutzernamen vorzubereiten. Dann können Sie den httpSessionAttributelistener zuhören. Wenn der Benutzer den Benutzernamen erfolgreich auf die Sitzung festlegt, wird der Benutzername gleichzeitig in der Liste im ServletContext gespeichert. Hören Sie schließlich den httpSessionListener durch. Wenn sich der Benutzer aus der Sitzung anmeldet, wird der Benutzername aus der Liste der Liste im Anwendungskontext gelöscht.
Schreiben Sie daher die Onlinelistener -Klasse, um den ServletContextListener, HttpSessionAttributelistener und HttpSessionListener -Schnittstellen zu implementieren. Der spezifische Code lautet wie folgt:
Paket com.web.servlet; import Java.util.linkedList; importieren java.util.list; importieren javax.servlet.servletContext; importieren javax.servlet.servletContexevent; importieren javax.servlet.servletContextListener; importieren javax.servlet.http.httpSessionattributelistener; import Javax.servlet.http.httpSessionBindingingEvent; import Javax.servlet.http.httpSessionEvent; importieren javax.servlet.http.httpSessionListener; // Online -Benutzerstatistik -Hörer -Implementierungsklasse öffentliche Klasse Onlinelistener implementiert servletContextListener, httpSessionAttributelistener, httpSessionListener {private servletContext application = null; public void contextdestroyed (servletContexevent arg0) {// todo automatisch generierte Methode Stub} public void contextInitialized (servletConteEvent arg0) {// Ein Anwendungsobjekt initialisieren. // Ein Listenattribut festlegen, um den Benutzernamen this.application.setAttribute ("Online", New LinkedList <string> ()) zu speichern; } // Methode, die beim Hinzufügen von Attributen zur Sitzung public void Attributeded (httpSessionBindingEvent arg0) {// die Liste der Benutzernamenliste <string> online = (Liste <string>) this.application .getAttribute ("Online") addiert. if ("userername" .equals (arg0.getName ())) {// Fügen Sie den aktuellen Benutzernamen der Liste online.add ((String) arg0.getValue ()); } // Die hinzugefügte Liste in das Anwendungsattribut this.application.setAttribute ("Online", online) zurücksetzen; } public void AttruterEmoved (httpSessionBindingEvent arg0) {// Todo automatisch generierte Methode Stup wird zurückrufen, wenn die Sitzung die öffentliche void SessionDestroyed (httpSessionEvent arg0) {// Die Liste der Benutzernamenliste <string> online = (Liste <string>) this.application .getAttribute ("Online") zerstört wird. // Erhalten Sie den aktuellen Benutzernamen String username = (String) arg0.getSession (). GetAtTribute ("Benutzername"); // diesen Benutzernamen aus der Liste online löschen.Remove (Benutzername); // Die gelöschte Liste in die Anwendungseigenschaft zurücksetzen. }} (2) Registrieren Sie den Hörer in Web.xml
Nachdem der Hörer implementiert wurde, muss er sich auch in der Datei web.xml registrieren, um zu funktionieren. Sie müssen nur Elemente in web.xml wie folgt hinzufügen.
<!-Registrieren Sie einen Hörer-> <Hörer> <!-Geben Sie den voll qualifizierten Namen der Listener-Implementierungsklasse an-> <Listener-Klasse> com.web.servlet.onlinelistener </listener-Klasse> </Listener
Schließlich erstellen wir mehrere Servlets, um die von diesem Hörer implementierte Funktionen zu testen.
Servlet -Klassencode zum Umgang mit dem Benutzeranmeldung:
Paket com.web.servlet; importieren java.io.ioException; Import Java.io.printwriter; importieren java.util.list; importieren javax.servlet.servletException; import Javax.servlet.http.httpServlet; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; // Servlet -Handling Benutzeranmeldung öffentliche Klasse LoginServlet erweitert HttpServlet (public void dodget (httpServletRequest Request), HttpServletResponse -Antwort) servletException, ioException {thopost (Anfrage, Antwort); } public void dopost (httpServletRequest-Anforderung, HttpServletResponse-Antwort) löst ServletException aus, IOException {Request.Setcharactercoding ("UTF-8"); // Setzen Sie den entsprechenden Inhaltstyp String-Username = Anfrage. im httpSessionAttributelistener if (userername! } // Die Liste der Online -Benutzernamen in der Anwendungskontextliste <string> online = (Liste <string>) getServletContext (). GetAtTribute ("Online"); Antwort.SetContentType ("text/html; charSet = utf-8"); Printwriter out = response.getWriter (); out.println ("<html>"); out.println ("<kopf> <titels> Benutzerliste </title> </head>"); out.println ("<body>"); out.println ("Der aktuelle 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.println automatisch neu zu schreiben ("<hr/> <a href ="/"mce_href ="/"" " + response.encodeurl (" logout ") +"/"> logout </a>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }} Klassencode für die Behandlung von Benutzeranmeldungen bei Servlet
Paket com.web.servlet; import Java.io.*; importieren java.util.list; importieren javax.servlet.servletException; importieren javax.servlet.http.*; // Servlet, die die Benutzer -Abmeldesitzung verarbeitet, erweitert die HttpServlet (public void dagget (httpServletRequest -Anforderung), die Antwort von HttpServlet (public void dodget) auswirkt, löscht ServletException, iOException {thopost.dopost (Request, Antwort); } public void dopost (httpServletRequest Request, httpServletResponse-Antwort) löst ServletException aus, ioException {request.setcharactercoding ("utf-8"); // zerstöre die Sitzung, die methode sessionSectroyed im SessionLinstener wird ausgelöst.getSession (). Invalidate (); // 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 ("<html>"); out.println ("<kopf> <titels> Benutzerliste </title> </head>"); out.println ("<body>"); 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 ="/"MCE_HREF ="/"Index.html/"> home </a> "); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }} Erstellen Sie dann eine index.html -Datei, mit der sich Benutzer anmelden können. Der Code lautet wie folgt:
<! DocType html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <meta http-äquiv = "content-type" content = "text/html; charset = utf-8"> <title> Index.html </title> </title> </title> </title> </title Benutzername: <Eingabe type = "text" name = "userername"/> <input type = "sure" value = "login"/> <br/> <br/> </form> </body> </html>
Bereitstellen Sie das Web in Tomcat Container Total und starten Sie. Öffnen Sie den Browser, um zugreifen zu können
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.