Este blog é um resumo relacionado das tecnologias de filtro, ouvinte e servlet, que implementa uma exibição simples de usuários on -line, detalhes da pessoa on -line e funções de chute de administrador
Abaixo está o código detalhado
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 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <display-name></display-name> <filter> <Filter-Name> caractere </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <iit-param> <amam-name> charset </param-name> <amul-value> utf-8 </param-value> </init-paparm> </filter> <filter> <name> LIGIN <name> </value> </init-paparm> </filter> <filter> <name> lipe <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-tattern> <pispatcher> request </despachante> <pispatcher> forward </sispatcher> </filter-Mapping> <lister> <listener-class> cn.hncu.listener.mysissionListener </listener-class> </ersertletlet> <Verlet-class-Class> cn.hncu.servlet.loginservlet </servlet-class> </servlet> <Verlet> <Verlet-name> ShowServlet </servlet-name> <Verlet-class> CN.HNCU.Servlet.ShowsSertlet </servlet> </servlet> <ervlet> Nome do meu componente j2ee </libe-name> <nome-name> kickoutServlet </servlet-name> <Servlet-class> cn.hncu.servlet.kickoutServlet </servlet-class> </servlet> <ervlet> <cremection> é a descrição do meu j2ee componente </descrição> <name> <Verlet-name> loginoutServlet </servlet-name> <Servlet-class> cn.hncu.servlet.loginoutServlet </servlet-class> </servlet> </servlet-mapping> <url-PLAPTN>/LOVENTLE <VATTLAPTLE> <Vattern> <vattern> <sattern> <vattern> <vattern> <vattern> <vattern> <vattern> <sutinservlet> loginstlet </stattername> <url-Pattern>/Log-Name> loginstlet </statter> <url-Pattern>/Log-Name> <Verlet-mapping> <ame-name> ShowServlet </servlet-name> <url-pattern>/servlet/ShowServlet </url-tattern> </servlet-mapping> <vatter-mapping> <Verlet-name> kickoutServlet </url--name> <restl-stattern>/servletp-mickoutlettlet </url-postlest </url-postlet> </url--kickoutlet> </url-postlesttlet </url-postlesttlet> </url-posttlettlet> servletpattlet> </url-postlettlettlet> </url-postlettlet> servlettlettlet> <Verlet-name> LoginoutServlet </servlet-name> <url-pantathern>/servlet/loginoutServlet </url-tattern> </servlet-mapping> <lorde-file-list> <lorde-file> index.jsp </-Welcome-File>
index.jsp
<%@ Page Language = "java" import = "java.util. Transitória // pt "> <html> <head> <title> Gerenciamento de informações on -line </ititle> </ad Head> <body> <h2> Gerenciamento de informações on -line </h2> <h3> membro do membro </h3> <c: se test =" $ {SessionsCope Empty.USER.NAME} "var =" boo "<form> value = "/LogInservlet"> </c: url> '> name: <input type = "text" name = "name"> <br/> <input type = "submit" value = "login"> <br/> </fort> </c: se> <c: se test = "$ {! sessionscope.user.admin} "var =" bo "> admin </c: se> <c: se test =" $ {! bo} "> membro </c: se> </c: if> <br/> <c: se test =" $ {! Informações </a> <br/> <a href = '<c: url value = "/servlet/loginoutServlet"/>'> safe </a> <br/> </c: if> </body> </html>/jsps/show.jsp
<%@ página linguagem = "java" import = "java.util. Transitória // pt "> <html> <head> <title> Informações on -line </title> <style type =" text/css "> tabela {color: Green; borda: 1px azul sólido; colapso da fronteira: colapso; Largura: 500px; margem: automático; } td {borda: 1px azul sólido; } th {borda: 1px azul sólido; } corpo {text-align: Center; } </style> <meta http-equiv = "refresch" content = "3"> </ad Head> <body> <table> <tr> <th> nome </th> <the> online </th> <th> último tempo de acesso </th> <th> ip </th> th> operação </oup> </th) <Td> <c: if test = "$ {! vazio online.user}" var = "boo"> $ {online.user.name} </c: if> <c: if test = "$ {empty online.user}"> visitante </c: if> </td> <td> $ {{online.cretTime}} } </td> <td> $ {online.ip} </td> <td> <c: se test = "$ {online.user! } "/> '> Kickout </a> </c: se> </c: if> </td> </tr> </c: foreach> </table> </body> </html>User.java (objeto de valor)
pacote cn.hncu.Domain; public class Usuário {private String Name; Admin Boolean Private; public String getName () {Return Name; } public void setName (nome da string) {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 (ouvinte)
pacote cn.hncu.listener; importar java.util.Collections; importar java.util.hashmap; importar java.util.map; importar javax.servlet.httpp.httpSession; import javax.servlet.http.httpSessionEVent; MySessionListener implementa httpSessionListener {@Override public void sessionCreated (httpsessionEvent se) {map <string, httpSession> onLines = (map <string, httpsession>) se.getSession (). GetServletContext (). if (onLines == null) {onLines = collection.synchronizedMap (novo hashmap <string, httpSession> ()); // adicione um bloqueio de sincronização ao mapa se.getSession (). } 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 ()); }}}CaracterFilter.java (filtro de caracteres)
package 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.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.httpServletRequest; public class CaracterFilter implementa filtro {private string charset; @Override public void init (filterConfig filterConfig) lança servletexception {charset = filterConfig.getInitParameter ("charset"); } @Override public void Dofilter (Solicitação de servletRequest, resposta servletResponse, cadeia de filtro) lança IoException, servletexception {request.SetcharAcTerEncoding (charset); Response.Setcharacterencoding (Charset); HttpServletRequest req = (httpServletRequest) solicitação; if (req.getSession (). getAttribute ("ip") == null) {req.getSession (). setAttribute ("ip", req.getRemoteaddr ()); } cadeia.dofilter (solicitação, resposta); } @Override public void Destroy () {}}LoginFilter.java (impede os turistas do acesso aleatório aos filtros)
package 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.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.http.httpServletRequest; importar javax.servlet.http.httpServletResponse; classe public class LogInfilter implementa filtro {@Override Public void init (filterConfig FilterConfig) Throws servleTeTeTeTeTeTeTeTeLeTETRIDETRIDENT (FilterConfig FilterConfig), servelect (} override Public Void (FiltRIDENFIG), o servleTeTleTeTeTeTeTeTeTeTride Public ( @ @ @ @@verride Public) cadeia) lança ioexception, servletexception {httpServletRequest req = (httpServletRequest) solicitação; if (req.getSession (). getAttribute ("user") == null) {((httpServletResponse) resposta) .sendredirect (req.getContextPath ()+"/index.jsp"); retornar; } cadeia.dofilter (solicitação, resposta); } @Override public void Destroy () {}}LogInservlet.java
pacote cn.hncu.servlet; importar java.io.ioException; importar java.io.printwriter; importar javax.servlet.servletexception; importar javax.servlet.http.httpSertlet; import javax.servlet.http.httlestlestlest; javax.servlet.http.httpServletResponse; importar cn.hncu.domain.user; public class Loginservlet estende httpServlet {public void Doget (httpServletReQuest Solicy, httpSleTleSponse) lança servException, IoException { } public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {string name = request.getParameter ("nome"); Usuário do usuário = (usuário) request.getSession (). GetAttribute ("usuário"); if (user == null && name! = null && name.trim (). length ()> 0) {// encapsular o usuário do usuário = new User (); user.setName (nome); if (name.equals ("admin")) {user.setAdmin (true); }} request.getSession (). SetAttribute ("Usuário", usuário); Response.sendRedirect (request.getContextPath ()+"/index.jsp"); }}ShowServlet.java
pacote cn.hncu.servlet; importar java.io.ioException; importar java.io.printwriter; importar java.text.simpledEformat; importar java.util.ArrayList; import Java.util.date; import java.util.hashmap; import java.ililililil.util.date; import java.util.hashmap; import java.ililililil.util.date; import.util.hashmap; import java.ililililil.util.date; import.util.hashmap; import java.ililililil.util.date; import.util.hashmap; import java.ililililil.util.date; import.util.hashmap; import java.ilililil.util.date; java.util.map; importar javax.servlet.servletexception; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httpServLeTrequest; import javax.serv.http.httletTreSpensSonsOnsene; ShowServlet estende httpServlet {public void Doget (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {doPost (solicitação, resposta); } public void DoPost (solicitação HTTPServletRequest, HttpServletResponse Response) lança servletexception, ioexception {map <string, httpSession> onLines = (map <string, httpsession>) request.getSlevletContext (). List <map <string, object >> list = new ArrayList <map <string, object >> (); // bar online encapsula -o na lista if (onLines! = Null) {iterator <httpsession> it = onLines.values (). Iterator (); while (it.hasnext ()) {httpSession s = it.Next (); Mapa <string, object> map = new hashmap <string, object> (); map.put ("id", s.getId ()); SimpledateFormat sdf = new SimpleDateFormat ("AAAA-MM-DD HH: MM: SS"); map.put ("createTime", sdf.format (new Date (s.getcreationTime ())); map.put ("LastCescedDtime", sdf.format (nova data (s.getLastAccedDtime ())); map.put ("ip", s.getAttribute ("ip")); // as informações de IP são suplementadas em map.put.put ("user", s.getAttribute ("usuário")); list.add (mapa); }} request.setAttribute ("onLines", list); request.getRequestDispatcher ("/jsps/show.jsp"). Forward (solicitação, resposta); }}KickoutServlet.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.HttpServletRequest;import javax.servlet.http.httpServletResponse; importar javax.servlet.http.httpsession; importar javax.servlet.http.httpSession; import javax.servlet.http.httpsesss; Javax.servlet.http.httpSession; importar javax.servlet.http.httpSession; importar javax.servlet.http.httpSession; import javax.servlet.http.httpsisss; lança servletexception, ioexception {dopost (solicitação, resposta); } public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {string id = request.getParameter ("id"); Mapa <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"). Forward (solicitação, resposta); }}LoginoutServlet.java
pacote cn.hncu.servlet; importar java.io.ioException; importar java.io.printwriter; importar javax.servlet.servletexception; importar javax.servlet.http.httpSertlet; import javax.servlet.http.httlestlestlest; javax.servlet.http.httpServletResponse; classe pública LoginoutServlet estende httpServlet {public void Doget (httpServletRequest, solicitação de httpServletResponse) lança servleTexception, IoException {doPost (, resposta); } public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança servletexception, ioexception {request.getSession (). invalidate (); Response.sendRedirect (request.getContextPath ()+"/index.jsp"); }} O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.