用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("");
        out.println("");
        out.println("  统计网站访问次数");
        out.println("  ");
        out.print("

"); out.print("您是第 "+context.getAttribute("counter")+" 位访客"); out.println("

"); out.println(" "); out.println(""); out.flush(); out.close(); } }

你可能感兴趣的:(【编程语言】➣,jsp)