javaEE之-------统计站点刷新量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javaEE之-------统计站点刷新量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2341字,纯文字阅读大概需要4分钟。
内容图文
每一个站点都有自己的统计訪问量,可是少不了server会出现意外情况,(如断电。。)
所以就须要我们在站点挂机的前段时间将这个数据存起来。
我们就须要用到站点最大的容器,application,我们採用观察者设计模式实现ServletContextListener接口。然后在销毁之前将这个数据存起来
ps:属于点点知识。大牛请绕道。
开发步骤:
第一步:实现ServletContextListener接口。第二步:实现两个方法。
contextInitialized
contextDestroyed
第三步:在web.xml中加入<listener/>节点。
详细实现:
我们须要实现ServletContextListener接口,里面用两个方法。我们须要在初始化的时候从文件中面读出来。然后在销毁的时候存进去。
读取文件:
public class MyServletContext implements ServletContextListener { //这是监听器。统计站点的訪问量 /* * 启动的时候(初始化)从文件中读取。存在servletcontext中 * 销毁的时候,把数据从servletcontext中取出来,存到文件中 */ String filename =""; @Override public void contextInitialized(ServletContextEvent sce) { ServletContext context=sce.getServletContext(); String filename=context.getRealPath("/count.txt"); try { BufferedReader br =new BufferedReader(new FileReader(filename)); String num =br.readLine(); Integer numer =Integer.valueOf(num); context.setAttribute("count", numer);//将读取的值存放到servletcontext容器中 br.close(); } catch( Exception e) { e.printStackTrace(); context.setAttribute("count", new Integer(0));//出异常说明没有值读取,所以设置为0; } }
?
销毁将数据存储到文件(仅仅有文件才是永久储存)
@Override public void contextDestroyed(ServletContextEvent sce) { ServletContext context=sce.getServletContext(); String filename=context.getRealPath("/count.txt"); try { PrintWriter pw =new PrintWriter(filename); Integer count=(Integer) context.getAttribute("count");//从容器中获取对应count值 // pw.write(count);//存的文件tomcat文件夹下 pw.print(count); System.out.println("销毁了"+count); pw.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
訪问量的加入
訪问量我们须要写在过滤器里面。每次过滤一次我们从context中加一次
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //这里考虑到多线程,这样写数据不准确,所以须要採用多线程 final ServletContext sct=request.getServletContext(); //启用新的线程去计数,不影响整个站点的速度,这样做非常好 new Thread(){ public void run(){ MyCount.addcount(sct);//把以下这个总体上锁。。统计数量会存在多线程的问题。所以我们採用多线程处理,仅仅让统计数量线程,不影响整个站点的效率} }.start(); chain.doFilter(request, response); }
//把这个上锁,仅仅会子分支会慢,不会影响整个站点的速度 class MyCount{ public synchronized static void addcount(ServletContext sct){ Integer count=Integer.parseInt(""+sct.getAttribute("count")); count++;//加入之后,我们须要加入容器里面进去 sct.setAttribute("count", count); System.out.println(count); } }MyServletContext在初始化的时候会从文件中加载,不存在会自己主动设置为一,每过一次filter。就会加1,这就实现了站点刷新量的统计。
内容总结
以上是互联网集市为您收集整理的javaEE之-------统计站点刷新量全部内容,希望文章能够帮你解决javaEE之-------统计站点刷新量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。