Ce blog est un résumé connexe des technologies de filtre, d'écoute et de servlet, qui met en œuvre un simple affichage d'utilisateurs en ligne, les détails des personnes en ligne et les fonctions de coup de pied administrateur
Vous trouverez ci-dessous le code détaillé
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-ristance" 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_3_0.xsd"> <plaw-name> <filter-name> caractères </ filter-name> <filter-class> cn.hncu.filter.characterfilter </ filter-class> <itnit-paam> </ param-name> charset </ param-name> <param-value> utf-8 </onsam-value> </nit-param> </filter> <filter> <filtre-class> cn.hncu.filter.loginfilter </ filter-Class> </filter> <filter-mapping> <filter-name> caractères </filter-name> <url-potern> / * </ url-potern> </ filter-mapping> <filter-mapping> <filter-name> Login </filter-name> <Url-Pattern> / Servlet / * </ url-Pattern> <URL-Pattern> / JSPS / * </ url-Pattern> <Dispatcher> Demande </ Dispatcher> <Disatcher> Forward </ Dispatcher> </filter-Mapping> <Deurner> <Dounerder-Class> CN.Hncu.Listener.MysessionListener </dinerder-Class> CN.Hncu.Listener> MysseStener </dilener-Class> CN.Hncu.Listener> MysseStener </dinerder-Class> CN.Hncu.Listener> MysseStener </dinerder-Class> <Serplet-Name> LoginServlet </Servlet-Name> <Servlet-Class> CN.hncu.servlet.logInservlet </ servlet-Class> </Servlet> <Servlet> <Serplet-Name> Showervlet </vrlet-name> <Servlet-Class> CN.HNCU.Servlet.showservlet </vlass-Class> Cn.hncu.Servlet.Sshervery </vilt-Class> </ Servlet> </ Servilet> Servlet> Servlet> La description de mon composant J2EE </ Description> <Display-Name> Ceci est le nom d'affichage de mon composant J2EE </splay-name> <servlet-name> kickouservlet </ servlet-name> <Servlet-Class> CN.hncu.Servlet.Kickoutsservlet </vrlett-class> </serplet> <Servit> <description> Ceci est la description de ma component J2EE </Serplet> <Servlet> Le nom d'affichage de mon composant J2EE </ Display-Name> <Servlet-Name> Loginoutsservlet </ Servlet-Name> <Servlet-Class> CN.hncu.servlet.loginoutsservlet </ Servlet-Class> </ Servlet> <Servlet-Mapping> <Servlet-Mapping> <Servlet-Name> <URL-PATTERN> / LoginServlet </ url-Pattern> </ Servlet-Mapping> <Servlet-Mapping> <Serplet-Mapping> <Serplet-Name> Showervlet </ Servlet-Name> <Url-Pattern> / Servlet / Showervlet </ Url-Pattern> </ Servlet-Mapping> <Serplet> <Servlet-Name> Kickoutsservlet </ Servlet-Name> <URL-Pattern> / Servlet / Kickoutsservlet </url-Pattern> </ Servlet-Mapping> <Servlet-Mapping> <Servlet-Mapping> <Servlet-Name> Loginoutsservlet </ Servlet-Name> <Url-Pattern> </ 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 public" - // w3c // dtd htm.01 public "- // w3c // dtd htm.01 public" - // w3c // dtd htm.01 Transitional // en "> <html> <éad- head> <ititle> Gestion des informations en ligne </title> </ head> <body> <h2> Gestion des informations en ligne </h2> <h3> Login des membres </h3> <c: if test =" $ {vide sessions. Value = "/ LoginServlet"> </ C: url> '> name: <input type = "text" name = "name"> <br/> <input type = "soume" value = "ligin"> <br/> </ form> </ c: if> <c: if test = "$ {! boo}"> Bienvenue, if {{Sessionscope.User.Name} <c: "if {$} Sessionscope.user.admin} "var =" bo "> admin </ c: if> <c: if test =" $ {! bo} "> membre </ c: if> </ c: if> <br/> <c: if test =" $ {! boo} "var =" boo "> <a href = '<c: url value =" / servlet / showervert " Informations </a> <br/> <a href = '<c: url value = "/ servlet / liginoutservlet" />'> sort exit </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 htm.01 Transitional // en "> <html> <éad- head> <itle> Informations en ligne </ title> <style type =" Text / CSS "> Table {Color: Green; Border: 1px bleu massif; Border-Collapse: s'effondrer; Largeur: 500px; marge: auto; } TD {Border: 1Px Blue solide; } th {Border: 1px Blue solide; } Body {Text-Align: Centre; } </ style> <meta http-equiv = "refresh" content = "3"> </ head> <body> <pable> <tr> <th> name </ th> <th> en ligne </th> <th> Temps d'accès </th> <th> ip </ th> <th <td> <c: if test = "$ {! vide online.user}" var = "boo"> $ {online.user.name} </ c: if> <c: if test = "$ {vide online.user}"> Visitor </ c: if> </ td> <td> $ {online.createtime} </td> <td> {$ {online.createtime} </td> <td> $ {en ligne. } </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 / kickousert? } "/> '> Kickout </a> </ c: if> </c: if> </td> </tr> </c: foreach> </s table> </ body> </html>User.java (objet de valeur)
package cn.hncu.domain; public de classe publique {nom de chaîne privée; Admin booléen privé; public String getName () {Nom de retour; } 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 (auditeur)
Package CN.HNCU.Listener; Import Java.util.Collections; Importer Java.util.hashmap; Import Java.util.map; Importer Javax.servlet.http.httpSession; Import Javax.servlet.http.httpSessionSession; implémente httpSessionListener {@Override public void SessionCreated (httpSessionEvent se) {map <string, httpSession> onlines = (map <string, httpSession>) se.getSession (). getServletContext (). getAtTRribute ("onlines"); if (onlines == null) {onlines = collections.SynchronizedMap (new hashmap <string, httpSession> ()); // ajouter un verrou de synchronisation à la carte 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 ()); }}}PersonnageFilter.java (filtre de caractères)
Package CN.hncu.Filter; Importer Java.io.ioException; Importer Javax.servlet.filter; Importer Javax.servlet.filterchain; Importer Javax.servlet.FilterConfig; Importer Javax.servlet.ServletException; Importer Javax.Servlet.ServleRequest; Importer Javax.Servlet.ServleReSERS; javax.servlet.http.httpservletRequest; public class worforFilter implémente filter {private String charSet; @Override public void init (filterConfig filterConfig) lève ServletException {charset = filterConfig.getInitParameter ("charset"); } @Override public void dofilter (ServLetRequest Request, ServletResponse Response, FilterChain Chain) lève IOException, servlexception {request.SetcharAtterencoding (Charset); Response.SetcharAtterencoding (Charset); HttpServLetRequest req = (httpservletRequest); if (req.getSession (). getAttribute ("ip") == null) {req.getSession (). setAttribute ("ip", req.getReToTeadDR ()); } chain.dofilter (demande, réponse); } @Override public void destre () {}}LoginFilter.java (empêche les touristes d'accès aléatoire aux filtres)
Package CN.hncu.Filter; Importer Java.io.ioException; Importer Javax.servlet.filter; Importer Javax.servlet.filterchain; Importer Javax.servlet.FilterConfig; Importer Javax.servlet.ServletException; Importer Javax.Servlet.ServleRequest; Importer Javax.Servlet.ServleReSERS; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; public class liginfilter implémente filter {@Override public void init (filterconfig filterconfig) lance le service de servilte FilterChain Chain) lève IOException, Servlexception {httpServLetRequest req = (httpServletRequest); if (req.getSession (). getAttribute ("user") == null) {((httpServletResponse) réponse) .SendRedirect (req.getContextPath () + "/ index.jsp"); retour; } chain.dofilter (demande, réponse); } @Override public void destre () {}}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; javax.servlet.http.httpservletResponse; import Cn.hncu.domain.User; public class LoginServlet étend httpservlet {public void doget (httpservletRequest Response httpserResponse) throws servlexception, ioException {dopost (request, réponse); } public void doPost (httpsservletRequest request, httpsservletResponse réponse) lève servletException, ioException {String name = request.getParameter ("name"); User user = (user) request.getSession (). GetAttribute ("utilisateur"); if (user == null && name! = null && name.trim (). length ()> 0) {// encapsule user user = new user (); user.setName (nom); if (name.equals ("admin")) {user.setAdmin (true); }} request.getSession (). setAttribute ("utilisateur", utilisateur); réponse.SendRedirect (request.getContextPath () + "/ index.jsp"); }}Showervlet.java
Package cn.hncu.servlet; import java.io.ioException; import java.io.printwriter; import java.text.simpledateformat; import java.util.arraylist; import java.util.iterator; import java.util.list; import; java.util.map; import javax.servlet.servletException; importer javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; import javax.servlet.http.httpère; importation javax.sservlet.http. Showervlet étend httpServlet {public void doGet (httpsservletRequest request, httpservletResponse réponse) lève ServLetException, ioException {doPost (request, réponse); } public void doPost (httpServLetRequest request, httpsservletResponse réponse) lève ServletException, ioException {map <string, httpSession> onlines = (map <string, httpSession>) request.getServletContext (). getAttribute ("onlines"); List <map <string, object >> list = new ArrayList <map <string, object >> (); // Bar Online le résume dans la liste 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 ("CreateEtime", sdf.format (new Date (s.getCreationTime ()))); map.put ("LastAccessSedTime", sdf.format (nouvelle date (s.getLastAccessSedTime ()))); map.put ("ip", s.getAttribute ("ip")); // Les informations IP sont complétées dans les caractères map.put.put ("utilisateur", s.getAttribute ("utilisateur")); list.add (map); }} request.setAttribute ("onlines", liste); request.getRequestDispatcher ("/ jsps / show.jsp"). Forward (demande, réponse); }}Kickouseservlet.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.http.httpleservlet; import; javax.servlet.http.httpservletResponse; import javax.servlet.http.httpSession; importer javax.servlet.http.httpSession; import javax.servlet.http.httpSession; import javax.servlet.http.httpSession; import javax.servlet.http.httpSession; import javax.servlet.http.httpSession; import javax.servlet.http.httpcession; import javax.servlet.http.httpcession; Import extend httpleserv. lève ServletException, ioException {doPost (request, réponse); } public void doPost (requette httpServletRequest, réponse httpservletResponse) lève Servlexception, ioException {String id = request.getParAmètre ("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 / showervlet"). Forward (demande, réponse); }}Loginoutsservlet.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; javax.servlet.http.httpservletResponse; public class Loginoutservlet étend httpservlet {public void doget (httpservletRequest request, httpservletResponse réponse) lance Servlexception, ioException {dopost (request, réponse); } public void doPost (requête HttpServletRequest, réponse httpservletResponse) lève ServletException, ioException {request.getSession (). Invalidate (); réponse.SendRedirect (request.getContextPath () + "/ index.jsp"); }} Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.