Эта статья в основном представляет пример использования слушателей в Java для подсчета количества людей в Интернете на веб -сайте. Он имеет определенное эталонное значение. Друзья в нуждающихся могут узнать об этом.
(1) Создать класс реализации слушателя
Чтобы примерно подсчитать количество людей в Интернете на веб -сайте, во -первых, вы можете прослушать через ServletContextListener. Когда контекст веб -приложения запускается, добавьте список в ServletContext, чтобы подготовить имя пользователя, хранящее в онлайн; Затем вы можете прослушать через httpsessionattributeListener. Когда пользователь успешно входит в систему имени пользователя на сеанс, имя пользователя сохраняется в списке в списке в ServletContext одновременно; Наконец, послушайте через httpsessionListener. Когда пользователь выходит из сеанса, имя пользователя удаляется из списка в контексте приложения.
Поэтому напишите класс OnLineListener для реализации интерфейсов ServletContextListener, httpsessionAttributeListener и httpsessionListener. Конкретный код заключается в следующем:
пакет com.web.servlet; импортировать java.util.linkedlist; импортировать java.util.list; Импорт javax.servlet.servletcontext; Импорт javax.servlet.servletContextevent; Импорт javax.servlet.servletContextLister; Импорт javax.servlet.http.httpsessionattributeListener; Импорт javax.servlet.http.httpsessionBindingEvent; Импорт javax.servlet.http.httpsessionEvent; Import javax.servlet.http.httpsessionListener; // онлайн -статистика пользователей СЛУЖБА ОБЩЕСТВЕННОСТЬ КЛАСС ВНУТРЕННЕЙ КЛАСС ONLINELISTERER реализует ServletContextListener, httpsessionAttributeListener, httpsessionListener {private ServletContext Application = null; public void contextDestroyed (ServletContexTevent arg0) {// TODO AutoGenerated Method stub} public void contextInitialized (servletContexTevent arg0) {// Инициализировать объект приложения this.Application = arg0.getServletContext (); // Установить атрибут списка для сохранения имени пользователя this.application.setattribute ("Online", новый LinkedList <string> ()); } // Метод, который будет обратным вызовом при добавлении атрибутов в сеанс public void attributeadded (httpsessionBindingevent arg0) {// Получить список имен имен <String> online = (list <string>) this.application .getattribute ("online"); if ("имя пользователя" .equals (arg0.getName ())) {// Добавить текущее имя пользователя в список Online.Add ((String) arg0.getValue ()); } // Сбросить добавленный список в атрибут приложения this.application.setattribute ("Online", Online); } public void attributeRemoved(HttpSessionBindingEvent arg0) { // TODO Auto-generated method stub } public void attributeReplaced(HttpSessionBindingEvent arg0) { // TODO Auto-generated method stub } public void sessionCreated(HttpSessionEvent arg0) { // TODO Auto-generated method stub } // Method Это будет обратное, когда сеанс будет уничтожен Public void SessionDestroyed (httpsessionEvent arg0) {// Получить список имен имен <String> онлайн = (list <string>) this.Application .getAttribute ("online"); // Получить текущее имя пользователя string username = (string) arg0.getSession (). Getattribute ("username"); // Удалить это имя пользователя из списка онлайн.remove (имя пользователя); // сбросить удаленный список в свойство приложения this.application.setattribute ("Online", Online); }} (2) Зарегистрируйте слушатель в web.xml
После того, как слушатель будет реализован, он также должен зарегистрироваться в файле web.xml для работы. Вам нужно только добавить элементы в web.xml следующим образом.
<!-Зарегистрируйте слушатель-> <Learser> <!-Укажите полностью квалифицированное имя класса реализации прослушивателя-> <Silerer-class> com.web.servlet.onlineListener </stirlicer-class> </sluster
Наконец, мы создаем несколько сервлетов для проверки функциональности, реализованной этим слушателем.
Код класса сервлета для обработки входа пользователя:
пакет com.web.servlet; импортировать java.io.ioexception; Импорт java.io.printwriter; импортировать java.util.list; Импорт javax.servlet.servletexception; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; // Обработка сервлета пользователя Логин публичный класс LoginServlet Extends httpservlet {public void Doget (httpservlectrequest, httpservletresponse response) throws servletexception, ioexception {this.dopost (запрос, ответ); } public void dopost (httpservlectrequest, httpservletresponse response) throws servletexception, ioexception {request.setcharacterencoding ("utf-8"); // Установить соответствующий тип контента String username = request.getParamet Метод в httpsessionAttributistener if (username! = null &&! username.equals ("")) {request.getSession (). setattribute ("username", имя пользователя); } // Получить список пользователей онлайн из списка контекста приложения <string> онлайн = (list <string>) getServletContext (). GetAttribute ("Online"); response.setContentType ("text/html; charset = utf-8"); Printwriter Out = response.getWriter (); out.println ("<html>"); out.println ("<Head> <Title> список пользователей </title> </head>"); out.println ("<body>"); out.println («Текущий пользователь:» + имя пользователя); out.print ("<hr/> <h3> Список пользователей онлайн </h3>"); int size = online == null? 0: онлайн.size (); for (int i = 0; i <size; i ++) {if (i> 0) {out.println ("<br/>"); } out.println (i + 1 + "." + Online.get (i)); } // ПРИМЕЧАНИЕ. Чтобы автоматически переписать URL Link Out.println ("<hr/> <a href ="/"mce_href ="/"" " + response.encodeurl (" logout ") +"/"> logout </a>"); out.println ("</body>"); out.println ("</html>"); out.flush (); out.close (); }} Код класса для обработки входа пользователя в сервиру
пакет com.web.servlet; импортировать java.io.*; импортировать java.util.list; Импорт javax.servlet.servletexception; Импорт javax.servlet.http.*; // Сервлет, который обрабатывает сеанс входа в систему пользователя открытый класс LogoutServlet Extends httpservlet {public void doget (httpservlectrequest, httpservletresponse response) бросает Servletexception, ioexception {this.dopost (запрос, ответ); } public void Dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioexception {request.setcharacterencoding ("utf-8"); // Уничтожение сеанса, метод сессии в сеансе в сеанселилинстенере будет инициирован request.getSession (). Invalidate (); // Получить онлайн -список пользователей из списка контекста приложения <string> онлайн = (list <string>) getServletContext (). GetAttribute ("Online"); response.setContentType ("text/html; charset = utf-8"); Printwriter Out = response.getWriter (); out.println ("<html>"); out.println ("<Head> <Title> список пользователей </title> </head>"); out.println ("<body>"); out.print ("<h3> Список пользователей онлайн </h3>"); int size = online == null? 0: онлайн.size (); for (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 (); }} Затем создайте файл index.html для пользователей для входа в систему, код следующим образом:
<! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <Head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <Tite> index.html </title> </hade> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bods> <bodse> <bods> <bods> <bodse> <bods> <bodste = utf-8 " «post»> username: <input type = "text" name = "username"/> <input type = "prope" value = "login"/> <br/> <br/> </form> </body> </html>
Разверните сеть в контейнер Tomcat Total и запустите. Откройте браузер для доступа
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.