Много раз вам было бы интересно узнать общее количество просмотров на определенной странице вашего сайта. Считать эти попадания с помощью сервлета очень просто, поскольку жизненный цикл сервлета контролируется контейнером, в котором он выполняется.
Ниже приведены шаги, которые необходимо предпринять для реализации простого счетчика посещений страницы, основанного на жизненном цикле сервлета.
-
Инициализируйте глобальную переменную в методе init ().
-
Увеличивайте глобальную переменную каждый раз, когда вызывается метод doGet () или doPost ().
-
При необходимости вы можете использовать таблицу базы данных для хранения значения глобальной переменной в методе destroy (). Это значение можно прочитать внутри метода init (), когда сервлет будет инициализирован в следующий раз. Этот шаг не является обязательным.
-
Если вы хотите рассчитывать только уникальные посещения страницы в сеансе, вы можете использовать метод isNew (), чтобы проверить, была ли эта страница уже достигнута в этом сеансе. Этот шаг не является обязательным.
-
Вы можете отобразить значение глобального счетчика, чтобы показать общее количество посещений на вашем веб-сайте. Этот шаг также необязателен.
Инициализируйте глобальную переменную в методе init ().
Увеличивайте глобальную переменную каждый раз, когда вызывается метод doGet () или doPost ().
При необходимости вы можете использовать таблицу базы данных для хранения значения глобальной переменной в методе destroy (). Это значение можно прочитать внутри метода init (), когда сервлет будет инициализирован в следующий раз. Этот шаг не является обязательным.
Если вы хотите рассчитывать только уникальные посещения страницы в сеансе, вы можете использовать метод isNew (), чтобы проверить, была ли эта страница уже достигнута в этом сеансе. Этот шаг не является обязательным.
Вы можете отобразить значение глобального счетчика, чтобы показать общее количество посещений на вашем веб-сайте. Этот шаг также необязателен.
Здесь я предполагаю, что веб-контейнер не будет перезапущен. Если он будет перезапущен или уничтожен сервлет, счетчик попаданий будет сброшен.
пример
В этом примере показано, как реализовать простой счетчик посещений страницы.
import java.io.*; import java.sql.Date; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class PageHitCounter extends HttpServlet { private int hitCount; public void init() { // Reset hit counter. hitCount = 0; } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Set response content type response.setContentType("text/html"); // This method executes whenever the servlet is hit // increment hitCount hitCount++; PrintWriter out = response.getWriter(); String title = "Total Number of Hits"; String docType = "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n"; out.println(docType + "<html>\n" + "<head><title>" + title + "</title></head>\n" + "<body bgcolor = \"#f0f0f0\">\n" + "<h1 align = \"center\">" + title + "</h1>\n" + "<h2 align = \"center\">" + hitCount + "</h2>\n" + "</body> </html>" ); } public void destroy() { // This is optional step but if you like you // can write hitCount value in your database. } }
Теперь давайте скомпилируем вышеприведенный сервлет и создадим следующие записи в web.xml
<servlet> <servlet-name>PageHitCounter</servlet-name> <servlet-class>PageHitCounter</servlet-class> </servlet> <servlet-mapping> <servlet-name>PageHitCounter</servlet-name> <url-pattern>/PageHitCounter</url-pattern> </servlet-mapping> ....
Теперь вызовите этот сервлет, используя URL http: // localhost: 8080 / PageHitCounter. Это будет увеличивать счетчик на единицу каждый раз, когда обновляется эта страница, и будет отображаться следующий результат —
Total Number of Hits
6
Hit Counter for a Website:
Hit Counter for a Website:
Много раз вам было бы интересно узнать общее количество посещений на вашем сайте. Это также очень просто в Servlet, и мы можем добиться этого с помощью фильтров.
Ниже приведены шаги, которые необходимо предпринять для реализации простого счетчика посещений веб-сайта, основанного на жизненном цикле фильтра.
-
Инициализируйте глобальную переменную в методе init () фильтра.
-
Увеличивайте глобальную переменную каждый раз, когда вызывается метод doFilter.
-
При необходимости вы можете использовать таблицу базы данных для хранения значения глобальной переменной в методе фильтра destroy (). Это значение можно прочитать внутри метода init (), когда фильтр будет инициализирован в следующий раз. Этот шаг не является обязательным.
Инициализируйте глобальную переменную в методе init () фильтра.
Увеличивайте глобальную переменную каждый раз, когда вызывается метод doFilter.
При необходимости вы можете использовать таблицу базы данных для хранения значения глобальной переменной в методе фильтра destroy (). Это значение можно прочитать внутри метода init (), когда фильтр будет инициализирован в следующий раз. Этот шаг не является обязательным.
Здесь я предполагаю, что веб-контейнер не будет перезапущен. Если он будет перезапущен или уничтожен сервлет, счетчик попаданий будет сброшен.
пример
В этом примере показано, как реализовать простой счетчик посещений сайта.
// Import required java libraries import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; public class SiteHitCounter implements Filter { private int hitCount; public void init(FilterConfig config) throws ServletException { // Reset hit counter. hitCount = 0; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws java.io.IOException, ServletException { // increase counter by one hitCount++; // Print the counter. System.out.println("Site visits count :"+ hitCount ); // Pass request back down the filter chain chain.doFilter(request,response); } public void destroy() { // This is optional step but if you like you // can write hitCount value in your database. } }
Теперь давайте скомпилируем вышеприведенный сервлет и создадим следующие записи в web.xml
.... <filter> <filter-name>SiteHitCounter</filter-name> <filter-class>SiteHitCounter</filter-class> </filter> <filter-mapping> <filter-name>SiteHitCounter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ....
Теперь вызовите любой URL, например URL http: // localhost: 8080 /. Это будет увеличивать счетчик на единицу каждый раз, когда любая страница получает попадание, и будет отображать следующее сообщение в журнале —