首页>代码>Java web实现统计网站IP访问次数之二(保存数据库)>/pageview/src/com/chen/servlet/CounterServlet.java
package com.chen.servlet;

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 {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

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

		ServletContext context = getServletContext();
		Integer count = null;
		synchronized (context) {
			count = (Integer) context.getAttribute("counter");
			if (null == count) {
				count = new Integer(1);
			} else {
				count = new Integer(count.intValue() + 1);
			}
			context.setAttribute("counter", count);
		}

		resp.setContentType("text/html;charset=gb2312");
		PrintWriter out = resp.getWriter();

		out.println("<html><head>");
		out.println("<title>页面访问统计</title>");
		out.println("</head><body>");
		out.println("该页面已被访问了" + "<b>" + count + "</b>" + "次");
		out.println("</body></html>");
		out.close();
	}

}
最近下载更多
何松林  LV7 2021年10月22日
490127488  LV2 2020年11月12日
8战魂5无双8  LV43 2020年8月3日
Limiun  LV6 2020年3月25日
1352090  LV9 2019年12月10日
夙興夜寐  LV3 2019年11月4日
kong.yee  LV40 2019年8月1日
luyuhan  LV1 2019年7月19日
1459897691  LV7 2019年5月20日
1037352843  LV1 2019年3月7日
最近浏览更多
SJIGNKLI  LV2 2022年12月12日
胖嘟嘟2580  LV3 2022年6月8日
brucega  LV3 2022年1月17日
学习指南  LV5 2022年1月3日
1532593037  LV8 2021年12月20日
hwhrr123  LV3 2021年11月20日
何松林  LV7 2021年10月22日
OUSHUREN 2021年8月3日
暂无贡献等级
hekewen1  LV7 2021年5月17日
zhaojialiang  LV7 2021年5月14日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友