我用的springmvc,大致讲讲自己的思路吧:
要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求,但是需要注意的是,配置拦截器的时候SEO靠我
需要排除不拦截的请求,因为对于静态资源css,js,以及图片,还有后台管理系统我们是不需要拦截的,我们只拦截用户访问的页面,也就是你展示
给用户的那些页面,配置拦截大概这样配置
<mvc:intercepSEO靠我tor><!-- 拦截路径 --><mvc:mapping path="/**" /><mvc:exclude-mapping path="后台管理url就不透露了"/><!-- 不拦截后台管理 --SEO靠我><mvc:exclude-mapping path="/css/**"/><mvc:exclude-mapping path="/js/**"/><mvc:exclude-mapping path=SEO靠我"/images/**"/><mvc:exclude-mapping path="/fonts/**"/><bean class="com.colin.interceptor.InterceptAllSEO靠我Request"/></mvc:interceptor>然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,
我想的是写一个监听器,sSEO靠我ervletContextListener,监听servletContext的初始(只在服务器启动的时候被创建),服务器启动时候去数据库中取出访问量,
放到servletContext(全局的域,在其他SEO靠我请求中都可以取出来),然后每次一个请求都把放在servletContext中的访问量加1(这个是在拦截器中做的事情),在初始化servletContext时还需要做一个事情,开启线程定时把servleSEO靠我tContext中的访问量存储到数据库中,如何定时执行?我想的是写一个循环,执行一次循环就让线程休眠
2个小时(自定义:时间越短越不容易造成访问量数据丢失),后来偶然看到了jdk文档中一个类,TimerSEO靠我,一个定时器,详细参考文档,它的访问可以实现定时执行任务,原理估计也差不多吧,这大概就是实现过程,具体代码就不贴了。有个比较严重的问题没有考虑到:由于ServletContext在内存中
只有一个对象,SEO靠我并发访问可能会造成线程安全问题,初步想在ServletContext中当一个线程安全的集合,数据的存取放在集合中
网站备案号:浙ICP备17034767号-2