Руководство по Servlets. Счётчик нажатий.

В данной статье мы рассмотрим механизм подсчёта количества посещений страницы.

Для этого мы можем реализовать определённую логику в сервлете, который отвечает за необходимую страницу.

Рассмотрим простой пример.

В качестве основы возьмём приложение из данной статьи.

Класс PageVisitsCounterDemo.java


package net.proselyte.servletstutorial;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Simple servlet that counts page visits.
 *
 * @author Eugene Suleimanov
 */

public class PageVisitsCounterDemo extends HttpServlet {
    private volatile int visitsCounter;

    public void init() {
        visitsCounter = 0;
    }

    synchronized void increaseAmountOfVisits() {
        visitsCounter++;
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        increaseAmountOfVisits();

        response.setContentType("text/html");

        String docType = "<!DOCTYPE html>";
        String title = "Visits Counter Demo";
        PrintWriter writer = response.getWriter();

        writer.println(docType + "<html>" +
                "<head>" +
                "<title>" + title +
                "</title>" +
                "</head>" +
                "<body>" +
                "<h1>Visits amount: </h1>" +
                visitsCounter +
                "</body>" +
                "</html>");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

Файл web.xml


<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Servlets Tutorial</display-name>

    <servlet>
        <servlet-name>SimpleServlet</servlet-name>
        <servlet-class>net.proselyte.servletstutorial.SimpleServlet</servlet-class>
    </servlet>

    <servlet>
        <servlet-name>PageVisitsCounterDemo</servlet-name>
        <servlet-class>net.proselyte.servletstutorial.PageVisitsCounterDemo</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>SimpleServlet</servlet-name>
        <url-pattern>/SimpleServlet</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>PageVisitsCounterDemo</servlet-name>
        <url-pattern>/PageVisitsCounterDemo</url-pattern>
    </servlet-mapping>
</web-app>

Выполним в консоли команду:

mvn tomcat7:run

Откроем браузер и перейдём по ссылке:

http://localhost:8088/PageVisitsCounterDemo

В результате мы получим следующую страницу:

servletsTutorialPageVisitsCounterDemo

На этом мы заканчиваем изучение способа подсчёта количества посещение страницы при работе с сервлетами.

В следующей статье мы рассмотрим механизм интернационализации.