700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java实现网站的访问量_如何实现对网站页面访问量的统计(javaweb和php)

java实现网站的访问量_如何实现对网站页面访问量的统计(javaweb和php)

时间:2022-02-17 11:32:13

相关推荐

java实现网站的访问量_如何实现对网站页面访问量的统计(javaweb和php)

如何实现对网站页面访问量的统计(javaweb和php)

一、总结

一句话总结:其实很简单啦,每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了。

1、javaweb中如何实现对网站页面访问量的统计?

用拦截器+定时更新

要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求

然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,

2个小时(自定义:时间越短越不容易造成访问量数据丢失)

2、thinkphp中如何实现对网站页面访问量的统计?

thinkphp中真实超级简单

每访问一次那个页面对应的index函数(控制器中的那个函数)访问次数就加1就可以了。

记得加1的时候用自增函数(setInc)就好

二、javaweb中如何实现对网站页面访问量的统计?

我用的springmvc,大致讲讲自己的思路吧:

要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求,但是需要注意的是,配置拦截器的时候

需要排除不拦截的请求,因为对于静态资源css,js,以及图片,还有后台管理系统我们是不需要拦截的,我们只拦截用户访问的页面,也就是你展示

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

然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,

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

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

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

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

参考:如何实现对网站页面访问量的统计? - CSDN博客

/qq_37667364/article/details/79326243

三、thinkPHP实现新闻访问量统计

public function detail(){

$this->assign('page_title','新闻中心');

$id=I('id',0,'int');

$newsModel=M('News');

// 新闻点击量的实现,借助于setInc()函数,每访问一次新闻字段“in_on”加1

$newsModel->where(array('id'=>$id))->setInc('in_on',1);

$news=$newsModel->find($id);

$this->assign('news',$news);

$this->display();

}

在新闻详细页面控制器中加入

$newsModel->where(array('id'=>$id))->setInc('in_on',1);

$news=$newsModel->find($id);

利用setInc实现没访问一次字段‘in_on’的值加1,这里字段“in_on”的初始值为0.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。