用servlet记录用户访问次数

用servlet记录用户访问次数


网站的计数器功能,浏览者每访问一次网站,计数器就累加一次。实现计数器主要是在servlet中应用ServletContext接口,Servlet容器在启动一个Web应用时,会为它创建一个ServletContext对象。当Servlet容器终止一个Web应用时,ServletContext对象也会被销毁,所以该对象与Web应用程序有同样的生命周期。也就是说,整个Web应用的组件可以共享ServletContext对象中存放的共享数据。

在ServletContext接口中存放共享数据的方法包括以下几种:

  • setAttribute() 存放共享数据
  • removeAttribute() 删除共享数据
  • getAttribute() 获取共享数据

一、新建名为CounterServlet的servlet类,在该类的doPost()方法中实现统计用户的访问次数

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

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class CounterServlet extends HttpServlet {

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

        ServletContext context = getServletContext();   // 获得ServletContext对象
        Integer count = (Integer)context.getAttribute("counter");   // 从ServletContext中获得计数器对象
        if(count == null){      // 如果为空,则在ServletContext中设置一个计数器的属性.即在第一次提交请求时创建该属性
            count = 1;
            context.setAttribute("counter", count);
        }else{      // 之后的请求,每次对计数器值加1
            context.setAttribute("counter", count+1);
        }

        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>统计网站访问次数</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("<h2><font color='gray'> ");
        out.print("您是第 "+context.getAttribute("counter")+" 位访客");
        out.println("</font></h2>");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }

}
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值