Web访问计数器
来源:互联网 发布:手机设计软件 编辑:程序博客网 时间:2024/05/21 17:24
Web访问计数器
1.首先新建一个Counter类
public class Counter
{
private int count;
public Counter(int count)
{
super();
this.count = count;
}
public int getCount()
{
return count;
}
public void setCount(int count)
{
this.count = count;
}
public void add(int step)
{
count += step;
}
}
2.新建一个Servlet进行测试(CounterServlet)
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
ServletContext context = getServletContext();
Counter counter = (Counter) context.getAttribute("counter");
if (counter == null)
{
counter = new Counter(1);
context.setAttribute("counter", counter);
}
response.setContentType("text/html;charset=GB2312");
PrintWriter out = response.getWriter();
out.write("Hello,您是第" + counter.getCount() + "个游客!");
out.println("Hello,您是第" + counter.getCount() + "个游客!");
counter.add(1);
}
3.进行测试
在浏览器中输入访问地址:
http://localhost:8080/TestPro/servlet/CounterServlet
4.按照上面的方式,我们可以实现一个网站访问的计数器,但当服务器重启之后,访问数又会清零,我们可以使用ServletContextListener在ServletContext被销毁时存储访问量,在ServletContext重新被创建时,对访问量初始化。
关于ServletContextListener接口:
ServletContextListener能够监听ServletContext的生命周期,当Servlet容器启动和关闭时,都会触发ServletContextEvent事件,而该事件是由ServletContextListener来处理的,在ServletContextListener接口中定义了两个方法来处理ServletContextEvent事件:
(1).contextInitialized(ServletContextEvent event):当Servlet容器启动时调用此方法,在调用完contextInitializaed(ServletContextEvent event)之后,容器再对Filter初始化,对初始化那些在Web应用启动时需要加载的Servlet;
(2).contextDestroy(ServletContextEvent event):当Servlet容器终止Web应用时,会调用此方法,在调用此方法之前,Servlet容器会首先销毁所有的Servlet和Filter过滤器。
自定义MyServletContextListener类,实现ServletContextListener接口。
public class MyServletContextListener implements ServletContextListener
{
public void contextDestroyed(ServletContextEvent event)
{
ServletContext context = event.getServletContext();
Counter counter = (Counter) context.getAttribute("counter");
if (counter != null)
{
try
{
String filepath = context.getRealPath("/count/counter.txt");
PrintWriter writer = new PrintWriter(filepath);
writer.println(counter.getCount());
writer.close();
} catch (Exception e){
e.printStackTrace();
}
}
}
public void contextInitialized(ServletContextEvent event)
{
ServletContext context = event.getServletContext();
try
{
BufferedReader reader = new BufferedReader(new
InputStreamReader(context.getResourceAsStream("/count/counter.txt")));
int count = Integer.parseInt(reader.readLine());
Counter counter = new Counter(count);
context.setAttribute("counter", counter);
reader.close();
} catch (Exception e){
e.printStackTrace();
}
}
}
【注意】上面的程序正常运行,首先需要在文本应用的入口(/TestPro/WebRoot)目录下新建一个文件count/counter.txt文件。
- Web访问计数器
- 访问计数器
- 访问页面的计数器
- RecordStore实现访问计数器
- 网站访问计数器
- 简单的访问计数器
- 网页访问计数器
- Golang 网站访问计数器
- Java Web 计数器
- Web Server 性能计数器
- 如何实现图像访问计数器
- .net写入Cookie访问计数器
- PHP实现来客访问计数器
- Web----简单的网页计数器
- 给BLOG增加页面访问计数器和总计数器
- Session实现购物,访问计数器,cookie使用!
- 实战博客园访问流量计数器
- 实战博客园访问流量计数器
- 二叉搜索树的c++实现
- PS快捷键
- Two Sum - LeetCode 1
- 通信的设计空间
- box-shadow
- Web访问计数器
- 论文选读Global Refinement of Random Forest
- 网站被攻击的常见方式和解决办法
- Qt+OpenGL游戏开发的资料
- 科研之路
- 关闭wifi显示
- 关于z-stack串口的一些看法
- 第十一周 项目1 - 存储班长信息的学生类
- UITableViewCell 在IOS7的父视图是UITableViewWrapperView