如何实现对网站页面访问量的统计(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,以及图片,还有后台管理系统我们是不需要拦截的,我们只拦截用户访问的页面,也就是你展示
给用户的那些页面,配置拦截大概这样配置
<mvc:interceptor>
<!-- 拦截路径 -->
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="后台管理url就不透露了"/><!-- 不拦截后台管理 -->
<mvc:exclude-mapping path="/css/**"/>
<mvc:exclude-mapping path="/js/**"/>
<mvc:exclude-mapping path="/images/**"/>
<mvc:exclude-mapping path="/fonts/**"/>
<bean class="com.colin.interceptor.InterceptAllRequest"/>
</mvc:interceptor>
然后拦截请求需要做的是什么?从数据库取出访问量?然后加1?这显然是不合理的,因为请求太多了,对数据库的频繁交互应该避免,
我想的是写一个监听器,servletContextListener,监听servletContext的初始(只在服务器启动的时候被创建),服务器启动时候去数据库中取出访问量,
放到servletContext(全局的域,在其他请求中都可以取出来),然后每次一个请求都把放在servletContext中的访问量加1(这个是在拦截器中做的事情),在初始化servletContext时还需要做一个事情,开启线程定时把servletContext中的访问量存储到数据库中,如何定时执行?我想的是写一个循环,执行一次循环就让线程休眠
2个小时(自定义:时间越短越不容易造成访问量数据丢失),后来偶然看到了jdk文档中一个类,Timer,一个定时器,详细参考文档,它的访问可以实现定时执行任务,原理估计也差不多吧,这大概就是实现过程,具体代码就不贴了。有个比较严重的问题没有考虑到:由于ServletContext在内存中
只有一个对象,并发访问可能会造成线程安全问题,初步想在ServletContext中当一个线程安全的集合,数据的存取放在集合中
https://blog.csdn.net/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.
如何实现对网站页面访问量的统计(javaweb和php)的更多相关文章
- Spring Boot入门(12)实现页面访问量统计功能
在日常的网站使用中,经常会碰到页面的访问量(或者访问者人数)统计.那么,在Spring Boot中该如何实现这个功能呢? 我们的想法是比较简单的,那就是将访问量储存在某个地方,要用的时候取出来 ...
- jsp统计页面访问量和刷访问量的简单使用
~Jsp可以进行简单的页面访问量统计,当然也可以使用Jsp刷访问量. 1:第一种使用全局变量<%! int i=0;%>进行页面的访问量统计,只有新打开一个浏览器才可以进行统计. 2:第二 ...
- 如何实现ASP.NET中网站访问量的统计
如何实现ASP.NET中网站访问量的统计 2009-07-30 15:50 佚名 网翼教程网 字号:T | T 本文介绍了如何在asp.net中进行网站访问量的统计. AD:51CTO 网+ 第十二期 ...
- asp.net 在线人数统计\页面访问量
1.新建网站,添加几个窗体.webForm1.aspx ,ViewStateForm.aspx 2.在网站的根目录下添加全局应用程序类“Global.aspx” .(重要) 3.在“Global.as ...
- PHP文件操作,多行句子的读取,file()函数,file_get_contents()函数,file_put_contents()函数,is_file,统计网站pv (访问量),文件的复制 copy,文件重命名 rename,删除文件 unlink
php中添加utf-8: header("Content-type:text/html;charset='UTF-8'"); 文件操作步骤: 1.在同一目录下建立一个file.tx ...
- Web并发页面访问量统计实现
Web并发页面访问量统计实现 - huangshulang1234的博客 - CSDN博客https://blog.csdn.net/huangshulang1234/article/details/ ...
- 网站页面优化必然趋势—WebP 图片!
本文梗概:众所周知,浏览器可以通过 HTTP 请求的 Accpet 属性 来指定接收的内容类型.依靠这个技术,可以在不修改任何 HTML/CSS 或者图片的情况下,向浏览器提供优化的图片,从而降低带宽 ...
- 【转载】国内网站博客数据统计选免费Google Analytics还是百度统计
[转载]国内网站博客数据统计选免费Google Analytics还是百度统计 Google Analytics谷歌统计是我用的第一个网站统计工具,当然现在也一直在用.Google Analytics ...
- Django訪问量和页面PV数统计
http://blog.csdn.net/pipisorry/article/details/47396311 以下是在模板中做一个简单的页面PV数统计.model阅读量统计.用户訪问量统计的方法 简 ...
随机推荐
- BZOJ 4551 HEOI 2016 树 (并查集)
思路: 考虑时光倒流 这不就是并查集裸题了-----. //By SiriusRen #include <cstdio> #include <cstring> #include ...
- 网络流Dinic算法模板 POJ1273
这就是以后我的板子啦~~~ #include <queue> #include <cstdio> #include <cstring> #include <a ...
- java 类和对象2
编写Java应用程序.首先,定义一个时钟类——Clock,它包括三个int型成员变量分别表示时.分.秒,一个构造方法用于对三个成员变量(时.分.秒) 进行初始化,还有一个成员方法show()用于显示时 ...
- ListView优化-ViewHolder缓存
安卓开发中ListView控件是一个使用频率相当的高级控件,通常用于展示一系列相似度极高的数据,当数据量极大或布局相当复杂时,ListView的性能优化就显得非常重要.所以在开发中不但功能上要满足,而 ...
- UVa 216 Getting in Line【枚举排列】
题意:给出n个点的坐标,(2<=n<=8),现在要使得这n个点连通,问最小的距离的和 因为n很小,所以可以直接枚举这n个数的排列,算每一个排列的距离的和, 保留下距离和最小的那个排列就可以 ...
- Debian9.5下sftp配置和scp用法
基于 ssh 的 sftp 服务相比 ftp 有更好的安全性(非明文帐号密码传输)和方便的权限管理(限制用户的活动目录). 1.如果只想让某些用户只能使用 sftp 操作文件, 而不能通过ssh进行服 ...
- vue的webpack打包
一个完整的项目离不开 开发环境 生产环境 测试环境 这三个环境 首先解释一下这三个环境的含义 开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意,为了开发调试方便,一般打开全部错误报告 ...
- Unity Shader (二)Cg语言
一.Cg基本数据类型 float 32位浮点数 half 16位浮点数 int 32位整型 fixed 12位定点数 bool 布尔数据 simpler* 纹理对象的句柄( the handle to ...
- [转] C# HttpWebRequest 绝技
c# HttpWebRequest与HttpWebResponse绝技 阅读原文 如果你想做一些,抓取,或者是自动获取的功能,那么就跟我一起来学习一下Http请求吧.本文章会对Http请求时的G ...
- LocalDateTime与mysql日期类型的交互(基于mybatis)
众所周知,在实体Entity里面,可以使用Java.sql.Date.java.sql.Timestamp.java.util.Date来映射到数据库的date.timestamp.datetime等 ...