Servlet 教程 之 Servlet 点击计数器 1

简介: Servlet教程展示了如何创建一个简单的网页点击计数器。在Servlet的`init()`方法中初始化全局变量`hitCount`,每次`doGet()`调用时递增。可选地,使用数据库持久化计数器并在`destroy()`中保存。若要按session计数,检查`isNew()`。实例中,Servlet响应包含页面标题和当前点击次数。通过编译Servlet并配置`web.xml`,访问`http://localhost:8080/TomcatTest/PageHitCounter`可测试计数器。

Servlet 教程 之 Servlet 点击计数器 1

Servlet 点击计数器

网页点击计数器

很多时候,您可能有兴趣知道网站的某个特定页面上的总点击量。使用 Servlet 来计算这些点击量是非常简单的,因为一个 Servlet 的生命周期是由它运行所在的容器控制的。

以下是实现一个简单的基于 Servlet 生命周期的网页点击计数器需要采取的步骤:

在 init() 方法中初始化一个全局变量。
每次调用 doGet() 或 doPost() 方法时,都增加全局变量。
如果需要,您可以使用一个数据库表来存储全局变量的值在 destroy() 中。在下次初始化 Servlet 时,该值可在 init() 方法内被读取。这一步是可选的。
如果您只想对一个 session 会话计数一次页面点击,那么请使用 isNew() 方法来检查该 session 会话是否已点击过相同页面。这一步是可选的。
您可以通过显示全局计数器的值,来在网站上展示页面的总点击量。这一步是可选的。
在这里,我们假设 Web 容器将无法重新启动。如果是重新启动或 Servlet 被销毁,计数器将被重置。

实例
本实例演示了如何实现一个简单的网页点击计数器:

package com.baidu.test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class PageHitCounter
    */
    @WebServlet("/PageHitCounter")
    public class PageHitCounter extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private int hitCount;

    public void init()
    {

     // 重置点击计数器
     hitCount = 0;
    

    }

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

     response.setContentType("text/html;charset=UTF-8");
     // 增加 hitCount 
     hitCount++; 
     PrintWriter out = response.getWriter();
     String title = "总点击量";
     String docType = "<!DOCTYPE html> \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()
    {

     // 这一步是可选的,但是如果需要,您可以把 hitCount 的值写入到数据库
    

    }

}
现在让我们来编译上面的 Servlet,并在 web.xml 文件中创建以下条目:

<?xml version="1.0" encoding="UTF-8"?>



PageHitCounter
com.baidu.test.PageHitCounter


PageHitCounter
/TomcatTest/PageHitCounter


现在通过访问 http://localhost:8080/TomcatTest/PageHitCounter 来调用这个 Servlet。这将会在每次页面刷新时,把计数器的值增加 1

目录
相关文章
|
5月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n),利用`request.getLocale()`获取用户区域设置,通过`DateFormat`类格式化特定区域的日期。示例代码演示了根据用户区域显示相应日期,强调了处理多语言网站的关键方法,如`getCountry()`、`getLanguage()`等。
44 6
|
3月前
|
前端开发 Java 应用服务中间件
JavaEE:Servlet后端搭建部署 一条龙全教程
JavaEE:Servlet后端搭建部署 一条龙全教程
|
5月前
|
Java API
Servlet 教程 之 Servlet 发送电子邮件 1
该教程介绍了如何使用Servlet发送电子邮件,需先安装JavaMail API和JAF。从Java官网或提供链接下载所需jar文件,将其加入CLASSPATH。示例代码展示了一个Servlet,通过MimeMessage设置发件人、收件人、主题和正文,然后使用Transport.send()发送邮件。要运行Servlet,需在web.xml配置并映射URL。访问特定URL即可触发邮件发送。
53 12
|
5月前
|
Java API
Servlet 教程 之 Servlet 发送电子邮件 2
使用Servlet发送HTML邮件需要JavaMail API和JAF。在示例中,Servlet创建MimeMessage对象,设置发件人、收件人、主题及HTML内容,然后通过Transport.send()发送。确保相关jar在CLASSPATH中。当Servlet被调用时,它会向指定邮箱发送带有HTML标题的邮件。
54 11
|
5月前
|
Java 应用服务中间件 API
Servlet 教程 之 Servlet 调试 2
Servlet调试常面临挑战,建议采用日志记录,推荐使用log4J。Servlet API的`log()`方法也能辅助调试,如示例代码所示,通过`ServletContext`记录消息。当参数缺失时,它能生成带有异常的日志。Tomcat容器会将这些日志保存在安装目录的logs文件夹下,有助于识别和追踪错误。在不常见异常的catch块中使用`log()`函数是良好实践。
42 8
|
5月前
|
开发框架 缓存 Java
JSP 教程 之 Eclipse JSP/Servlet 环境搭建 1
本教程指导如何使用Eclipse搭建JSP/Servlet开发环境。需下载Eclipse J2EE和Tomcat,将Tomcat解压至无中文和空格的D盘目录。启动Tomcat后,服务器运行,通过浏览器访问`http://localhost:8080/`。在Tomcat的webapps\ROOT目录创建test.jsp文件,输入代码并访问`http://localhost:8080/test.jsp`以验证环境配置成功。
80 1
|
5月前
|
XML Java 数据格式
Servlet 教程 之 Servlet 自动刷新页面 1
Servlet教程展示了如何使用Java Servlet自动刷新页面。通过response.setIntHeader(&quot;Refresh&quot;, 5)方法,页面将在5秒间隔自动刷新。给出的实例中,Servlet每5秒更新并显示当前时间。需编译Servlet并在web.xml配置,然后访问http://localhost:8080/TomcatTest/Refresh以观察效果。
42 10
|
5月前
|
小程序
Servlet 教程 之 Servlet 调试 3
Servlet调试是开发中的挑战,涉及复杂交互且错误难复现。使用JDB调试器,将HttpServer视为Servlet响应HTTP请求的调试目标。调试时,需配置调试器的classpath以包含HttpServer、Servlet及其相关类。为启用Servlet重载,通常将`server_root/servlets`加入classpath,但在调试时此规则有助于在加载Servlet前设置断点。在正确配置后,可在Servlet代码中设定断点,通过浏览器请求该Servlet以启动调试,程序会在断点处暂停。
53 6
|
5月前
|
自然语言处理 定位技术
Servlet 教程 之 Servlet 国际化 4
Servlet教程之国际化讲解了如何根据用户区域设置展示多语言内容。关键术语包括国际化(i18n)、本地化(l10n)和区域设置(locale)。Servlet通过`request.getLocale()`获取区域设置,并使用`NumberFormat`类格式化特定区域的货币。示例代码展示了如何根据客户端locale显示货币格式。
37 3
|
5月前
|
定位技术
Servlet 教程 之 Servlet 国际化 3
Servlet教程展示了如何实现国际化(i18n)和本地化(l10n)。通过request对象的getLocale()获取用户区域设置,利用DateFormat进行特定区域的日期格式化。示例代码显示了根据用户浏览器设置显示相应语言和文化的日期。
34 2