Этот блог представляет собой соответствующую сводку фильтра, слушателя и сервисных технологий, которые реализуют простой отображение онлайн -пользователей, данных онлайн -человека и функций управления администратором
Ниже приведен подробный код
web.xml
<? xml version = "1.0" Encoding = "utf-8"?> <web-app arser = "3.0" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema electsmance "/www.w3. 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.xcsd"> </javaee/Web-App_3_0.x.xunmal> </javaee/web-app_3_0. <Filter-name> символ </filter-name> <filter-class> cn.hncu.filter.characterfilter </filter-class> <init-param> <param-name> charset </param-name> <param-value> utf-name-name-name> <filter-class> cn.hncu.filter.loginfilter </filter-class> </filter> <filter-mapping> <filter-name> символ </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name> </filter-name> <filter> <filter> <filter-name> </filter> <Url-pattern>/servlet/*</url-pattern> <url-pattern>/jsps/*</url-pattern> <Диспетчер> запрос </Диспетчер> <Диспетчер> Первый </диспетчер> </filter-mapping> <delloader> <lisherer> cn.hncu.listener. <servlet-name>LoginServlet</servlet-name> <servlet-class>cn.hncu.servlet.LoginServlet</servlet-class> </servlet> <servlet> <servlet-name>ShowServlet</servlet-name> <servlet-class>cn.hncu.servlet.ShowServlet</servlet-class> </servlet> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of my J2EE component</display-name> <servlet-name>KickOutServlet</servlet-name> <servlet-class>cn.hncu.servlet.KickOutServlet</servlet-class> </servlet> <servlet> <description>This is the description of my J2EE component</description> <display-name>This is the display name of My J2EE Component </display-name> <servlet-name> loginoutservlet </servlet-name> <serlet-class> cn.hncu.servlet.loginoutservlet </servlet-class> </servlet> <servlet-mapping> <servlet-paterser> <servlet-name> loginservlet </servlet-meam </servlet-mapping> <servlet-mapping> <servlet-mapping> <servlet-name>ShowServlet</servlet-name> <url-pattern>/servlet/ShowServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>KickOutServlet</servlet-name> <url-pattern>/servlet/KickOutServlet</url-pattern> </servlet-mapping> <Servlet-Mapping> <Servlet-Mapping> <Servlet-name> LoginoutServlet </servlet-name> <url-pattern>/servlet/loginoutservlet </url-pattern> </servlet> <selclive-file-list> <welcelporthefile> index.jsp </gelfive-file> </werved-file> </web --app>
index.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> <! doctpe html public "// w3c // dtd htm htm.01. Transitional // en "> <html> <head> <title> Управление информацией онлайн </title> </head> <hody> <h2> Управление информацией онлайн </h2> <h3> вход в систему </h3> <c: if test =" $ {ument sessionscope.user.name} "var =" boo "> <form action = '<CoS: url value = value value value"/varevle "/var}"/"coO" Имя: <input type = "text" name = "name"> <br/> <input type = "propect" value = "login"> <br/> </form> </c: if> <c: if test = "$ {! Boo}"> добро пожаловать обратно, $ {sessionscope.user.name} <c: if test = "$ {sessioncope.aser.admin. Admin </c: if> <C: if test = "$ {! Bo}"> member </c: if> </c: if> <br/> <c: if test = "$ {! Boo}" var = "boo"> <a href = '<c: url value = "/servlet/vareervlet"/>'> Просмотреть онлайн -информацию </a> <cbr/> <a href = 'c:' c: 'c:' c: 'c:' cseervlet "/> '>. value = "/servlet/loginoutservlet"/> '> безопасный выход </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"%> <! doctpe html public "// w3c // dtdml htm.01. Transitional // en "> <html> <head> <title> онлайн -информация </title> <style type =" text/css "> table {color: green; Граница: 1px твердый синий; пограничный коллапс: коллапс; Ширина: 500px; Порность: Авто; } td {border: 1px твердый синий; } th {border: 1px твердый синий; } body {text-align: center; } </style> <meta http-equiv = "refresh" content = "3"> </head> <body> <table> <tr> <th> name </th> <Th> онлайн </th> <Th> Последнее время доступа </th> <Th> ip </th> <Th> Operate </th> </tr> <c: foreece prets = "$ {requestScope. <td> <c: if test = "$ {! ement Online.user}" var = "boo"> $ {Online.user.name} </c: if> <c: if test = "$ {yety Online.User}"> посетители </c: if> </td> <td> $ {Online.createTime} </td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> <td> } </td> <td> $ {Online.ip} </td> <td> <c: if test = "$ {inlont.user! = sessionscope.user}"> <c: if test = "$ {! Online.user.admin && boo}"> <a href = '<c: url value = "/levlet /&s intret? } "/> '> Kickout </a> </c: if> </c: if> </td> </tr> </c: foreach> </table> </body> </html>User.java (объект значения)
пакет cn.hncu.domain; User User user {private String name; частный логический администратор; public String getName () {return name; } public void setName (string name) {this.name = name; } public boolean isadmin () {return admin; } public void setAdmin (логический администратор) {this.admin = admin; } @Override public String toString () {return "user [name =" + name + ", admin =" + admin + "]"; }}MySessionListener.java (слушатель)
Пакет cn.hncu.listener; import java.util.collections; import java.util.hashmap; import java.util.map; импорт javax.servlet.http.httpsession; импорт javax.servlet.http.httpsession; MySessionListener реализует httpsessionListener {@Override public void sessionCreated (httpsessionEvent se) {map <string, httpsession> onlines = (map <string, httpsession>) se.getsession (). Getservletcontext (). Getattribuet ("onlines"); if (onlines == null) {onlines = collections.synchronizedmap (new hashmap <string, httpsession> ()); // Добавить блокировку синхронизации в карту se.getsession (). geterervletcontext (). 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 ()); }}}ParmateFilter.java (фильтр символов)
Пакет cn.hncu.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterConfig; import javax.servlet.servletexception; impormerssessessessessessessessessessessessessessessessessessessessessessessessessessess. javax.servlet.http.httpservlectrequest; открытый класс символфильтер реализует фильтр {private string charset; @Override public void init (filterConfig filterConfig) Throws ServletException {charset = filterConfig.getInitParameter ("charset"); } @Override public void dofilter (запрос ServletRequest, ответ ServletResponse, цепочка FilterChain) бросает ioException, servletexception {request.setcharacterencoding (charset); response.setcharacterencoding (charset); Httpservletrequest req = (httpservletrequest) запрос; if (req.getSession (). getattribute ("ip") == null) {req.getSession (). setattribute ("ip", req.getRemoteAddr ()); } chain.dofilter (запрос, ответ); } @Override public void destry () {}}LoginFilter.java (предотвращает туристам случайный доступ к фильтрам)
Пакет cn.hncu.filter; import java.io.ioexception; import javax.servlet.filter; import javax.servlet.filterchain; import javax.servlet.filterConfig; import javax.servlet.servletexception; impormerssessessessessessessessessessessessessessessessessessessessessessessessessessess. javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class LoginFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest request, ServletResponse response, Цепочка FilterChain) бросает ioException, servletexception {httpservletrequest req = (httpservletrequest) запрос; if (req.getSession (). getattribute ("user") == null) {((httpservletresponse) ответ) .sendredirect (req.getContextPath ()+"/index.jsp"); возвращаться; } chain.dofilter (запрос, ответ); } @Override public void destry () {}}LoginServlet.java
Пакет cn.hncu.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; импорт javax.servlet.http.httpservlet; import javax.servlet.http.httpservlectrequest; javax.servlet.http.httpservletresponse; import cn.hncu.domain.user; открытый класс LoginServlet Extends httpservlet {public void Doget (httpservletrequest, httpservletresponse response) Throws servletexception, ioException {doPost (запрос); } public void dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioexception {string name = request.getParameter ("name"); User user = (user) request.getsession (). Getattribute ("user"); if (user == null && name! = null && name.trim (). length ()> 0) {// инкапсулирует пользователь user = new user (); user.setname (имя); if (name.equals ("admin")) {user.setAdmin (true); }} request.getSession (). setattribute ("user", user); response.sendredirect (request.getContextPath ()+"/index.jsp"); }}Showservlet.java
Пакет cn.hncu.servlet; import java.io.ioexception; import java.io.printwriter; import java.text.simpledateformat; импорт java.util.arraylist; импорт java.util.date; импорт java.util.hashmap; import java.util.itertor; импорт. java.util.map; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservescess Showervlet Extens httpservlet {public void Doget (httpservletrequest запрос, httpservletresponse response), выбросит Servletexception, ioException {doPost (запрос, ответ); } public void Dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioexception {map <string, httpsession> onlines = (map <string, httpsession>) request.getServletContext (). getAttribut ("onlines"); Список <map <string, object >> list = new ArrayList <map <string, object >> (); // bar Online инкапсулирует его в 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 (новая дата (s.getcreationtime ()))); map.put ("LastAccedTime", sdf.format (новая дата (s.getlastaccedtime ()))); map.put ("ip", s.getAttribute ("ip")); // IP Информация об IP дополняется в Marticfilter map.put ("user", s.getattribute ("user")); list.add (map); }} request.setattribute ("onlines", list); request.getRequestDispatcher ("/jsps/show.jsp"). }}Kickoutservlet.java
Пакет cn.hncu.servlet; import java.io.ioexception; import java.io.printwriter; импорт java.util.map; import javax.servlet.servletexception; импорт javax.servlet.http.httpservlet; import javax.servlet.http.http.httpservlet; import javax.servlet.http.http.httpservlet. javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; импорт javax.servlet.http.httpsession; импорт javax.servlet.http.httpsession; импорт javax.servlet.httpsession; javax.servlet.http.httpsession; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; импорт javax.servlet.http.httpsession; импорт extpservservelt {public void doget (httpserververververververververververservel бросает ServletException, ioException {DoPost (запрос, ответ); } public void dopost (httpservletrequest, httpservletresponse response) throws 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/showerervlet"). }}Loginoutservlet.java
Пакет cn.hncu.servlet; import java.io.ioexception; import java.io.printwriter; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservlectrequest; javax.servlet.http.httpservletresponse; открытый класс loginoutservlet расширяет httpservlet {public void doget (httpservletrequest, httpservletresponse response), вытесняет Servletexception, ioException {dopost (запрос, ответ); } public void Dopost (httpservletRequest, httpservletresponse response) throws servletexception, ioexception {request.getSession (). Invalidate (); response.sendredirect (request.getContextPath ()+"/index.jsp"); }} Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.