Este blog es un resumen relacionado de las tecnologías de filtro, oyente y servlet, que implementa una visualización simple de usuarios en línea, detalles de la persona en línea y funciones de patada de administrador
A continuación se muestra el código detallado
web.xml
<? xml versión = "1.0" encoding = "utf-8"?> <web-app versión = "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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <javiswname> </DISPOST> </DISPOST-NAME> <filter-name> carácter </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <it-param> <amamname> charset </param-name> <amam-value> utf-8 </param-value> </init-param> </filtro> <filter> <ferry-name> login </filtro> <filter-class> cn.hncu.filter.loginfilter </filter-class> </filtro> <filter-mapping> <filter-name> carácter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name-name> login </filtre-name> <url-pattern>/servlet/*</srl-patear <Url-Tattern>/jsps/*</sl-Pattern> <Sapante> Solicitud </spates> <Starter> reenviar </patcher> </filter-mapping> <Oyerer> <Oyerer-class> cn.hncu.listener.mysessionListener </oyeDer-class-class> </yearer> <servlet> <ervlet-name> loginservlet </servlet-name> <servlet-class> cn.hncu.servlet.loginservlet </servlet-class> </servlet> <ervlet> <servlet-name> showservlet </servlet-name> <ervlet-class> cn.hncu.servlet.showservlet </servlet-class> </servlet> <ervlet> <Servlet> <Scuion> Nombre de mi componente J2EE </siplip-name> <servlet-name> kickoutservlet </servlet-name> <ervlet-class> cn.hncu.servlet.kickoutservlet </servlet-class> </servlet> <ervlet> <descripción> Esta es la descripción de mi componente j2ee </descripción> <plaipsip Name> Este es el nombre de la pantalla de mi componente J2ee </Display </Display. <servlet-name>LoginOutServlet</servlet-name> <servlet-class>cn.hncu.servlet.LoginOutServlet</servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> <servlet-mapping> <Servlet-mapping> <Servlet-name> showservlet </servlet-name> <url-pattern>/servlet/showservlet </sl url-pattern> </servlet-mapping> <ervlet-mapping> <ervlet-name> kickoutservlet </servlet-name> <url-pattern>/servlet/kickoutservlet </url-pattern> </servlet-mappepapping <Servlet-name> LoginoutServlet </servlet-name> <url-pattern>/servlet/loginoutservlet </sl-pattern> </servlet-mapping> <welcome-file-list> <beating-file> index.jsp </welcome-file> </welcome-list> </beb-app>
index.jsp
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> < Transitional // en "> <html> <foad> <title> Gestión de la información en línea </title> </head> <body> <h2> gestión de la información en línea </h2> <h3> Member Login </h3> <c: if test =" $ {sessionscope.user.name.name} "var =" boo "> <formul valor = "/loginservlet"> </c: url> '> name: <input type = "text" name = "name"> <Br/> <input type = "enviar" value = "login"> <br/> </form> <//c: if> <c: if test = "$ {! boo}"> Bienvenido hacia atrás, $ {sessioncope.user.name} <c: if test = " sessionscope.user.admin} "var =" bo "> admin </c: if> <c: if test =" $ {! bo} "> miembro </c: if> </c: if> <br/> <c: if test =" $ {! Información </a> <br/> <a href = '<c: url value = "/servlet/loginoutservlet"/>'> Salida segura </a> <br/> </c: if> </body> </html>/jsps/show.jsp
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%> < Transitional // en "> <html> <fead> <title> Información en línea </title> <style type =" text/css "> table {color: verde; borde: 1px azul sólido; Colapso de borde: colapso; Ancho: 500px; margen: auto; } td {borde: 1px azul sólido; } th {borde: 1px azul sólido; } cuerpo {text-align: centro; } </style> <meta http-equiv = "refresh" content = "3"> </head> <body> <table> <tr> <th> name </th> <th> en línea </th> <th> Último tiempo de acceso </th> <th> ip </th> <th> operation </th> </tr> <c: bosquear items = "$ {requestscope.onlines}" <TD> <c: if test = "$ {! Vaciento en línea.user}" var = "boo"> $ {online.user.name} </c: if> <c: if test = "$ {vacío en línea.user}"> visitante </c: if> <td> <td> $ {en línea.createTime } </td> <td> $ {en línea.ip} </td> <td> <c: if test = "$ {en línea.user! = sessionscope.user}"> <c: if test = "$ {! Online.user.admin && boo}"> <a href = '<c: url valor = "/servlet/kickoutserlet? } "/> '> Kickout </a> </c: if> </c: if> </td> </tr> </c: foreach> </table> </body> </html>User.java (objeto de valor)
paquete cn.hncu.domain; usuario de clase pública {nombre de cadena privada; administrador booleano privado; public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public boolean isadmin () {return admin; } public void setAdmin (admin boolean) {this.admin = admin; } @Override public String toString () {return "user [name =" + name + ", admin =" + admin + "]"; }}MySessionListener.java (oyente)
paquete 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.htps. MySessionListener implementa httpsessionListener {@Override public void sessionCreated (httpSessionEvent se) {map <string, httpsession> onlines = (map <string, httpsession>) SE.getSession (). GetServletContext (). GetTribute ("onlines"); if (onlines == null) {onlines = collections.synchronizedmap (new HashMap <String, httpsession> ()); // Agregue un bloqueo de sincronización al mapa 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 ()); }}}Personajefilter.java (filtro de caracteres)
paquete 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.servletRest; import javax.servlet.servlet; javax.servlet.http.httpservletRequest; public class Caracterfilter implementa filtro {private string charset; @Override public void init (FilterConfig FilterConfig) lanza ServLetException {Charset = FilterConfig.GetInitParameter ("Charset"); } @Override public void dofilter (solicitud de servletRequest, respuesta de servicio de servicio, cadena de filtro de filtro) lanza ioexception, servletException {request.setcharacterEncoding (charset); respuesta. SetcharacterEncoding (charset); HttpservletRequest req = (httpservletRequest) solicitud; if (req.getSession (). getAttribute ("ip") == null) {req.getSession (). setAttribute ("ip", req.getRemoteaddr ()); } chain.dofilter (solicitud, respuesta); } @Override public void destruye () {}}Loginfilter.java (evita que los turistas sean acceso aleatorio a filtros)
paquete 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.servletRest; import javax.servlet.servlet; javax.servlet.http.httpservletRequest; import javax.servlet.http.httpservletResponse; public class Loginfilter implementa Filter {@Override public void init (FilterConfig FilterConfig) Lanza ServletException {} @Override Void Void Dofilter (ServletEd Solicitud, FilterConfig), FilterChin Chain Lanza ioexception, servletException {httpservletRequest req = (httpservletRequest) solicitud; if (req.getSession (). getAttribute ("user") == null) {((httpServletResponse) respuesta) .sendedirect (req.getContextPath ()+"/index.jsp"); devolver; } chain.dofilter (solicitud, respuesta); } @Override public void destruye () {}}LoginServlet.java
paquete 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; importar; javax.servlet.http.httpservletResponse; import cn.hncu.domain.user; public class LoginServlet extiende httpservlet {public void doget (httpservletRequest solicitud, respuesta httpservletreSponse) lanza ServletException, ioexception {dopost (solicitud, respuesta); } public void dopost (httpservletRequest solicitud, respuesta httpservletResponse) lanza ServletException, ioException {String name = request.getParameter ("name"); Usuario user = (usuario) request.getSession (). GetAttribute ("usuario"); if (user == null && name! = null && name.trim (). longitud ()> 0) {// encapsular user user = new user (); user.setName (nombre); if (name.equals ("admin")) {user.setadmin (true); }} request.getSession (). setAttribute ("usuario", usuario); respuesta.sendedirect (request.getContextPath ()+"/index.jsp"); }}Showservlet.java
paquete 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.util.iterator; import java.util.list; 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.ttpsession; ShoServlet extiende httpservlet {public void doget (httpservletRequest solicitud, respuesta httpservletResponse) lanza ServletException, ioexception {dopost (request, respuesta); } public void dopost (httpservletRequest solicitud, httpservletResponse respuesta) arroja servletException, ioexception {map <string, httpsession> onlines = (map <string, httpsession>) request.getServletContext (). GetTribute ("Onlines"); List <map <string, object >> list = new ArrayList <map <string, object >> (); // bar en línea lo encapsula en list 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 (nueva fecha (s.getCreationTime ()))); map.put ("LastAccessTime", sdf.format (nueva fecha (s.getLastAccessTime ()))); map.put ("ip", s.getAttribute ("ip")); // La información de IP se complementa en caracteresfilter map.put ("usuario", s.getAttribute ("usuario")); list.add (mapa); }} request.setAttribute ("onlines", lista); request.getRequestDIsPatcher ("/jsps/show.jsp"). Forward (solicitud, respuesta); }}Kickoutservlet.java
paquete 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; javax.servlet.http.httpservletResponse; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; importsion; javax.servlet.http.HttpSession;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSession;import extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) lanza ServletException, ioexception {dopost (solicitud, respuesta); } public void dopost (httpservletRequest solicitud, respuesta httpservletResponse) lanza 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"). avance (solicitud, respuesta); }}Loginoutservlet.java
paquete 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; importar; javax.servlet.http.httpservletResponse; public class LoginOutServlet extiende httpservlet {public void Doget (HttpServletRequest Solicitud, respuesta httpServletResponse) lanza ServletException, ioexception {dopost (solicitud, respuesta); } public void dopost (httpservletRequest solicitud, respuesta httpservletResponse) lanza ServletException, ioexception {request.getSession (). Invalidate (); respuesta.sendedirect (request.getContextPath ()+"/index.jsp"); }} Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.