Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2321213
  • 博文数量: 252
  • 博客积分: 5472
  • 博客等级: 大校
  • 技术积分: 3107
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-17 18:39
文章分类

全部博文(252)

文章存档

2012年(96)

2011年(156)

分类: Java

2011-12-07 17:09:37

CounterServlet.java
 
  1. package org.sunxin.ch02.servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import javax.servlet.ServletContext;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. public class CounterServlet extends HttpServlet
  10. {
  11.    public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException
  12. {
  13. ServletContext context = getServletContext();
  14. Integer count = null;
  15. synchronized(context)
  16. {
  17. count = (Integer) context.getAttribute("counter");
  18. if (null == count)
  19. {
  20. count = new Integer(1);
  21. }
  22. else
  23. {
  24. count = new Integer(count.intValue() + 1);
  25. }
  26. context.setAttribute("counter", count);
  27. }
  28. resp.setContentType("text/html;charset=gb2312");
  29. PrintWriter out = resp.getWriter();
  30. out.println("");
  31. out.println("页面访问统计");
  32. out.println("");
  33. out.println("该页面已被访问了" + "" + count + "" + "次");
  34. out.println(" ");
  35. out.close();
  36. }
  37. }

在程序代码的第17行,调用getServletContext()方法(从GenericServlet类间接继承而来)得到Web应用程序的上下文对象。为了避免线程安全的问题,我们在第19行使用synchronized关键字对context对象进行同步。第21行,调用上下文对象的getAttribute()方法获取counter属性的值。第21~29行,判断count是否为null,如果为null,则将它的初始值设为1。当这个Servlet第一次被访问的时候,在上下文对象中还没有保存counter属性,所以获取该属性的值将返回null。如果count不为null,则将count加1。第30行,将count作为counter属性的值保存到ServletContext对象中。当下一次访问这个Servlet时,调用getAttribute()方法取出counter属性的值不为null,于是执行第28行的代码,将count加1,此时count为2,表明页面被访问了两次。第39行,输出count,显示该页面的访问次数。

另外还需要注意的是,访问次数在重启Tomcat服务器后,将重新从1开始,为了永久保存访问次数,可以将这个值保存到文件或数据库中。

另外还需要注意的是,访问次数在重启Tomcat服务器后,将重新从1开始,为了永久保存访问次数,可以将这个值保存到文件或数据库中。

 

阅读(3868) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

马夹GG2011-12-09 00:34:45

恩,永久保存访问量,感谢分享