用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();
    }

--------------------- 
作者:Elon' 
来源:CSDN 
原文:https://blog.csdn.net/coder__cs/article/details/72716712 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/Leo_01169/article/details/86253438
今日推荐