Запись доступов к веб-страницам с использованием слушателей

JavaJavaBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь реализовывать функцию отслеживания доступа к веб-странице с использованием слушателя. Целью этого проекта является создание веб-приложения, которое может отображать количество пользователей, текущих доступа к домашней странице.

👀 Предварительный просмотр

количество посетителей веб-страницы

🎯 Задачи

В этом проекте вы научитесь:

  • Как реализовать класс MyListener.java для отслеживания количества обращений к домашней странице.
  • Как реализовать файл index.jsp для отображения текущего количества посетителей.
  • Как настроить MyListener в файле web.xml.
  • Как запустить сервер Tomcat и протестировать приложение.

🏆 Достижения

После завершения этого проекта вы сможете:

  • Использовать интерфейс HttpSessionListener для отслеживания сессий пользователей.
  • Хранить и получать количество посетителей в ServletContext.
  • Отображать количество посетителей в файле JSP.
  • Конфигурировать слушателя в файле web.xml.
  • Запускать и тестировать веб-приложение с использованием Tomcat.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ProgrammingTechniquesGroup(["Programming Techniques"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/ProgrammingTechniquesGroup -.-> java/scope("Scope") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/oop("OOP") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/interface("Interface") java/FileandIOManagementGroup -.-> java/io("IO") java/ConcurrentandNetworkProgrammingGroup -.-> java/threads("Threads") java/ConcurrentandNetworkProgrammingGroup -.-> java/net("Net") java/SystemandDataProcessingGroup -.-> java/xml_dom4j("XML/Dom4j") subgraph Lab Skills java/scope -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} java/classes_objects -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} java/oop -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} java/interface -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} java/io -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} java/threads -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} java/net -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} java/xml_dom4j -.-> lab-300394{{"Запись доступов к веб-страницам с использованием слушателей"}} end

Реализовать класс MyListener.java

В этом шаге вы научитесь реализовывать класс MyListener.java для отслеживания количества обращений к домашней странице.

  1. Откройте файл MyListener.java, расположенный в директории ListenerProject/src/main/java/org/labex/listener.

  2. Реализуйте класс MyListener, который реализует интерфейс HttpSessionListener. Этот интерфейс предоставляет два метода: sessionCreated() и sessionDestroyed().

  3. В методе sessionCreated() выполните следующие действия:

    • Получите ServletContext из объекта HttpSessionEvent.
    • Получите атрибут "count" из ServletContext. Если атрибут равен null, инициализируйте его значением 1. В противном случае увеличьте счетчик на 1.
    • Установите обновленный атрибут "count" обратно в ServletContext.
  4. В методе sessionDestroyed() выполните следующие действия:

    • Получите ServletContext из объекта HttpSessionEvent.
    • Получите атрибут "count" из ServletContext. Если счетчик больше 0, уменьшите его на 1.
    • Установите обновленный атрибут "count" обратно в ServletContext.

Ваш класс MyListener.java должен выглядеть так:

package org.labex.listener;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class MyListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext context = se.getSession().getServletContext();
        Integer count = (Integer) context.getAttribute("count");

        if (count == null) {
            count = 1;
        } else {
            count++;
        }

        context.setAttribute("count", count);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext context = se.getSession().getServletContext();
        Integer count = (Integer) context.getAttribute("count");

        if (count!= null && count > 0) {
            count--;
        }

        context.setAttribute("count", count);
    }
}
✨ Проверить решение и практиковаться

Реализовать файл index.jsp

В этом шаге вы научитесь реализовывать файл index.jsp для отображения количества обращений к домашней странице.

  1. Откройте файл index.jsp, расположенный в директории ListenerProject/src/main/webapp.

  2. В файле JSP импортируйте необходимые классы:

    • javax.servlet.ServletContext
    • javax.servlet.http.HttpServletRequest
  3. Реализуйте метод getVisitorsCount(), который принимает объект HttpServletRequest в качестве параметра. В этом методе выполните следующие действия:

    • Получите ServletContext из объекта HttpServletRequest.
    • Получите атрибут "count" из ServletContext. Если атрибут равен null, верните 0. В противном случае верните значение счетчика.
  4. В файле JSP отобразите текущее количество посетителей, вызвав метод getVisitorsCount() и встраив метод getVisitorsCount() и встраив результат в HTML.

Ваш файл index.jsp должен выглядеть так:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ page import="javax.servlet.ServletContext" %> <%@
page import="javax.servlet.http.HttpServletRequest" %>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Index Page</title>
  </head>
  <body>
    <%! public int getVisitorsCount(HttpServletRequest request) { ServletContext
    context = request.getServletContext(); Integer count = (Integer)
    context.getAttribute("count"); return (count!= null)? count : 0; } %>

    <h1>Welcome to My Website</h1>
    <p>Current Visitors: <%= getVisitorsCount(request) %></p>
  </body>
</html>
✨ Проверить решение и практиковаться

Конфигурировать слушателя в web.xml

В этом шаге вы научитесь настраивать MyListener в файле web.xml.

  1. Откройте файл web.xml, расположенный в директории ListenerProject/src/main/webapp/WEB-INF.

  2. Добавьте следующую конфигурацию в файл web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!-- Определите ваш слушатель -->
    <listener>
        <listener-class>org.labex.listener.MyListener</listener-class>
    </listener>

</web-app>

Эта конфигурация зарегистрирует класс MyListener в качестве слушателя в веб-приложении.

✨ Проверить решение и практиковаться

Запустить сервер Tomcat и протестировать приложение

  1. Откройте терминал и перейдите в директорию ListenerProject с использованием следующей команды:

    cd ~/project/ListenerProject/
  2. Запустите сервер Tomcat с использованием следующей команды:

    mvn clean tomcat7:run
  3. Откройте веб-браузер и перейдите по адресу http://localhost:8080. Вы должны увидеть страницу "Welcome to My Website" с отображенным текущим количеством посетителей.

  4. Обновите страницу несколько раз, и вы должны увидеть, как количество посетителей увеличивается.

  5. Закройте браузер и подождите несколько минут. Обновите страницу снова, и вы должны увидеть, как количество посетителей уменьшается.

Поздравляем! Вы успешно реализовали функцию отслеживания доступа к веб-странице с использованием слушателя.

✨ Проверить решение и практиковаться

Резюме

Поздравляем! Вы завершили этот проект. Вы можете практиковаться в более многих лабораторных работах в LabEx, чтобы улучшить свои навыки.