有个比较严重一个线程安全的集合数据的存取放在集合中

  我用的springmvc,大体讲讲本身的思路吧:css

  要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口js实现网站访问量统计,拦截全部请求,可是须要注意的是js实现网站访问量统计,配置拦截器的时候spring

  js实现网站访问量统计_有两个网站,统计既访问淘宝有访问阿里的方法_asp实现统计访问量的代码

  须要排除不拦截的请求,由于对于静态资源css,js,以及图片,还有后台管理系统咱们是不须要拦截的,咱们只拦截用户访问的页面,也就是你展现数据库

  js实现网站访问量统计_asp实现统计访问量的代码_有两个网站,统计既访问淘宝有访问阿里的方法

  给用户的那些页面,配置拦截大概这样配置安全

  有两个网站,统计既访问淘宝有访问阿里的方法_js实现网站访问量统计_asp实现统计访问量的代码

  而后拦截请求须要作的是什么?从数据库取出访问量?而后加1?这显然是不合理的,由于请求太多了,对数据库的频繁交互应该避免,服务器

  js实现网站访问量统计_asp实现统计访问量的代码_有两个网站,统计既访问淘宝有访问阿里的方法

  我想的是写一个监听器,servletContextListener,监听servletContext的初始(只在服务器启动的时候被建立),服务器启动时候去数据库中取出访问量,并发

  放到servletContext(全局的域,在其余请求中均可以取出来),而后每次一个请求都把放在servletContext中的访问量加1(这个是在拦截器中作的事情),在初始化servletContext时还须要作一个事情,开启线程定时把servletContext中的访问量存储到数据库中,如何定时执行?我想的是写一个循环,执行一次循环就让线程休眠mvc

  2个小时(自定义:时间越短越不容易形成访问量数据丢失),后来偶然看到了jdk文档中一个类,Timer,一个定时器,详细参考文档,它的访问能够实现定时执行任务,原理估计也差很少吧,这大概就是实现过程,具体代码就不贴了。有个比较严重的问题没有考虑到:因为ServletContext在内存中app

  只有一个对象,并发访问可能会形成线程安全问题,初步想在ServletContext中当一个线程安全的集合,数据的存取放在集合中url

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/1414
0 评论
374

发表评论

!