-
2016-06-25 15:04:49
CountFilter.java:
package com.mingrisoft;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
/**
* Servlet过滤器实现类CountFilter,通过注解的方式配置过滤器
*/
@WebFilter(
urlPatterns = { "/index.jsp" },
initParams = {
@WebInitParam(name = "count", value = "5000")
})
public class CountFilter implements Filter {
private int count; // 来访数量
/**
* 默认构造方法
*/
public CountFilter() { }
/**
* 销毁方法
*/
public void destroy() { }
/**
* 过滤处理方法
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
count ++; // 访问数量自增
// 将ServletRequest转换成HttpServletRequest
HttpServletRequest req = (HttpServletRequest) request;
// 获取ServletContext
ServletContext context = req.getServletContext();
context.setAttribute("count", count); // 将来访数量值放入到ServletContext中
chain.doFilter(request, response); // 向下传递过滤器
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
String param = fConfig.getInitParameter("count"); // 获取初始化参数
count = Integer.valueOf(param); // 将字符串转换为int
}
}
index.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主界面</title>
</head>
<body>
<h2>
欢迎光临,<br>
您是本站的第【
<%=application.getAttribute("count") %>
】位访客!
</h2>
</body>
</html>
更多相关内容 -
统计网站访问量
2019-09-21 15:18:44有效统计到天 pv 访问量 -
javascript实现的网站访问量统计代码
2020-11-23 17:41:13网站一般都有访问量统计工具,比较高效实用的工具多种多样,并且非常的精确。实用javascript也可以简单的实现此功能,尽管没有网络上常用的精确,不过的确也实现了一定的功能,下面就是一段代码实例,感兴趣的朋友... -
java统计网站访问量
2021-03-12 19:59:38我的理解,人数统计好说,因为,可已设置监听器,让其在服务器启动的时候进行监听,然后统计登录人数,但是统计在线人数,就麻烦点了,因为大多数人都不愿意点击注销按钮,直接关闭浏览器,这样session的关闭就麻烦...我的理解,人数统计好说,因为,可已设置监听器,让其在服务器启动的时候进行监听,然后统计登录人数,但是统计在线人数,就麻烦点了,因为大多数人都不愿意点击注销按钮,直接关闭浏览器,这样session的关闭就麻烦了点,我先给出统计人数的代码,我想统计在线人数可以定时调用程序来统计,但是不是实时的,所以最大的障碍就是怎么在关闭浏览器的时候,就关闭session
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class ApplicationListener implements ServletContextListener{
public void contextDestroyed(ServletContextEvent arg0) {
ServletContext sc = arg0.getServletContext();
Integer count = (Integer) sc.getAttribute("AccessCount");
try {
PrintWriter out = new PrintWriter(new FileWriter("c:/Users/god/count.txt"));// 将人数保存到文本文件
System.out.println("count:"+count);
out.print(count);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void contextInitialized(ServletContextEvent arg0) {
Integer count = 0;
ServletContext sc = arg0.getServletContext();
try {
Scanner in = new Scanner(new FileReader("c:/Users/god/count.txt"));// 读取已经产生的人数信息,然后进行累加
count = in.nextInt();
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
sc.setAttribute("AccessCount", count);
}
}
在web.xml文件里面进行设置
文件的位置也就是包名.ApplicationListener
统计的时候是设置拦截器,需要在struts.xml中设置
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
@SuppressWarnings("serial")
public class AccessInterceptor implements Interceptor{
private String id;
public void destroy() {
}
public void init() {
}
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation ai) throws Exception {
ServletContext sc = ServletActionContext.getServletContext();
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
if(!session.getId().equals(id)){
Integer count = (Integer) sc.getAttribute("AccessCount");// 判断如果登录成功,统计数字自增
sc.setAttribute("AccessCount", count+1);
id = session.getId();
}
String result = ai.invoke();
return result;
}
}
你可以直接挂一个google或者51的统计脚本;
你也可以使用日志的方式来记录访问量,一般不要往数据库来;通过分析log即可;
回答者: ustbduanhang - 九级 2009-8-31 09:33
可以提供一些思路给你:
【网站级访问量】
一、 ServletContext 中存放一个计数器(Integer 也可)
ServletRequestListener.requestInitialized(ServletRequestEvent sre)
计数器++
二、 Filter 中使用 静态变量 进行统计。
【页面级访问量】
一、 Servlet 或 Action 中使用 静态变量 进行统计。
二、 Filter 中使用 静态变量 进行统计。
【网站在线人数】
ServletContext 中存放一个计数器(Integer 也可)或 其他类中使用一个 静态变量
登录时:session.setAttribute("wangyf", "***") 计数器++
HttpSessionListener
sessionDestroyed(HttpSessionEvent se) {
session.getAttribute("wangyf") != null 计数器--
}
利用Servlet监听器实现简单网站访问量和在线人数统计
Servlet监听器主要有三种,在ServletContext(上下文对象)、Session(会话)和request(请求)这三对象上进行监听,可以监听对象的创建、销毁、添加属性、删除属性、属性值的改变等。ServletContext对象的作用域在整个WEB应用程序,类似于Static属性;Session的作用域在一个会话,一个会话可以理解为一个从一个浏览器发出请求到服务器开始,一直到浏览器关闭(但通常我们可以设置会话的生命期,防止那些获得连接后却长时间没有再向服务器发出请求的情况),相当于类的成员变量;request的作用域仅在一次请求,即浏览器发送一次请求到服务器处理该请求并发回响应就结束了,相当于局部变量。
要实现统计网站的历史访问量就要利用ServletContext的全局属性的特点了,为了在服务器停止后,之前的访问量不会消失,我们就应该在服务器关闭前将当前的访问量存放到文件里面,以便下一次重启服务器后,可以继续使用。在ServletContext上面创建监听器,监听上下文对象的销毁和创建,并同时在创建上下文的时候从文件读取历史数据,在上下文销毁的时候将当前访问量写入到文件保存起来。以后每当创建一个会话(Session)的时候,就将当前的计数值加一。在线人数的统计是利用在创建会话的时候,将在线人数之加一,在会话对象销毁的时候,将在线人数值减一。因为两种人数统计都是被所有用户共享的信息,所以使用ServletContext的setAttribute()和getAttribut()方法来对总人数和在线人数进行管理。
创建对上下文对象的监听器:
public class ContextListener implements ServletContextListener{
public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub Properties pro = new Properties(); try { pro.setProperty("counter", arg0.getServletContext().getAttribute("counter").toString()); String filePath = arg0.getServletContext().getRealPath("/WEB-INF/classes/db/count.txt");
//上下文对象销毁时,将当前访问量写入文件 OutputStream os = new FileOutputStream(filePath); pro.store(os, null); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
public void contextInitialized(ServletContextEvent arg0) { // TODO Auto-generated method stub arg0.getServletContext().setAttribute("online", 0); Properties pro = new Properties(); InputStream in = ContextListener.class.getResourceAsStream("/db/count.txt"); String n = null; try { pro.load(in); n = pro.getProperty("counter");//从计数文件中读取该站的历史访问量 arg0.getServletContext().setAttribute("counter", Integer.parseInt(pro.getProperty("counter"))); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("读取计数文件失败"); } System.out.println("创建上下文对象" + n); }
}
创建对会话对象的监听:
public class SessionListener implements HttpSessionListener{
public void sessionCreated(HttpSessionEvent arg0) { // TODO Auto-generated method stub HttpSession session = arg0.getSession(); int i = (Integer)session.getServletContext().getAttribute("online");//获得当前在线人数,并将其加一 session.getServletContext().setAttribute("online", i+1); int n = (Integer)session.getServletContext().getAttribute("counter");//创建一个会话就将访问量加一 session.getServletContext().setAttribute("counter", n+1); Properties pro = new Properties(); try {//访问人数加一后就将结果写入文件(防止不正常关闭服务器) pro.setProperty("counter", session.getServletContext().getAttribute("counter").toString()); String filePath = session.getServletContext().getRealPath("/WEB-INF/classes/db/count.txt"); OutputStream os = new FileOutputStream(filePath); pro.store(os, null); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("写入计数文件失败"); } System.out.println("创建一个会话"); }
public void sessionDestroyed(HttpSessionEvent arg0) { // TODO Auto-generated method stub //销毁会话的时候,需要将在线人数减一 ServletContext context = arg0.getSession().getServletContext(); Integer i = (Integer)context.getAttribute("online"); context.setAttribute("online", i-1); arg0.getSession().invalidate(); System.out.println("销毁一个会话"); }
}
在web.xml文件中将监听器注册,在创建和销毁对象时就会触发该事件了。 因为我们通常做测试的时候,服务器的关闭是没有通过正常的方式来进行的,所以程序中在创建一个会的时候将网站历史访问数据值加一后就将该值在文件中进行更新,否则可能该值不会改变。创建一个会话是通过request.getSession()来触发的,所以在做测试的Servlet中需要加上HttpSession session = request.getSession(); //设置会话的最大不活动时间为60秒 session.setMaxInactiveInterval(60);。
-
Java web网站访问量的统计
2020-08-31 16:09:32主要为大家详细介绍了Java web网站访问量的统计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
javaweb之统计网站访问量小案例
2019-02-20 17:04:52javaweb之统计网站访问量小案例效果图
- 主页
- 第一次访问
- 第二次访问
- 切换浏览器,数据连续累加(全局作用域,服务器不重启,数据会一直保留)
html代码
<h2><a href="CountServlet">点我查看网站访问量</a></h2>
CountServlet代码
package count; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CountServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { int totalCount=1;//默认访问量为1 //获取网站访问量 Object count = request.getServletContext().getAttribute("count"); //判断count是否为null,不为null表示曾经访问过,直接将count赋值给totalCount if(count!=null) { totalCount=(int)count; } //访问次数累加 request.getServletContext().setAttribute("count",totalCount+1); response.getWriter().println("网站访问量为:"+totalCount); //输出到界面 } }
- 主页
-
Python:Flask简单实现统计网站访问量
2021-04-16 18:51:10hello,我是wangzirui32,今天我们来学习如何使用Flask简单实现统计网站访问量。 开始学习吧! 1. 项目架构 架构如下,请自行创建文件夹和文件: demo/ templates/ index.html # 主页 app.py people.json # ...hello,我是wangzirui32,今天我们来学习如何使用Flask简单实现统计网站访问量。
开始学习吧!
1. 项目架构
架构如下,请自行创建文件夹和文件:
demo/ templates/ index.html # 主页 app.py people.json # 存储访问量的json文件
2. 项目文件编写
2.1 index.html 主页编写
代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>wangzirui32网站首页</title> </head> <body> <h1>这里是wangzirui32的网站首页</h1> <p>您是第<b>{{ people }}</b>位访问该网站的人</p> </body> </html>
people参数是服务器传过来的值,这个我们后面会编写。
2.2 people.json 数据初始化
输入一个初始化值(0):
0
即可。
2.3 app.py 主程序编写
代码:
from flask import Flask from flask import render_template from json import load, dump app = Flask(__name__) # 安全密钥设置 app.config["SECRET_KEY"] = 'u7923749274927492371shdwdss' @app.route("/") # 设置主页url def index(): with open("people.json") as f:# 打开json数据 并将访问量+1 people = load(f) + 1 with open("people.json", "w") as f: # 再存储到文件中 dump(people, f) # 最后 传递people参数即可 return render_template("index.html", people=str(people)) if __name__ == "__main__": # 设置运行信息 app.run(host="127.0.0.1", port="8000", debug=True)
3. 结果展示
运行app.py的代码,访问127.0.0.1:8000,应该可以看见:
(数字可能不同,因为笔者刷新了亿下)
好了,今天的课程就到这里了,本人刚学Flask,如果文章有什么问题,可以在评论区指出,再见!
-
Springboot网站用户的访问量统计
2018-05-26 23:27:52Springboot网站用户的访问量统计,代码加入了线程,根据自己的需求下载,不需要线程的留下邮箱 -
统计网站访问量代码
2013-10-30 11:38:08统计网站访问量的代码,很实用,亲测可用的哦 -
asp.net 统计网站访问量
2011-07-23 00:20:44asp.net 统计访问量asp.net 统计访问量asp.net 统计访问量asp.net 统计访问量 -
网站访问量统计
2017-09-26 11:47:24您是第8位访问者 总访问量: 9 本年访问量:2 本月访问量:2 本周访问量:9 本日访问量:2您是第8位访问者 总访问量: 9 本年访问量:2 本月访问量:2 本周访问量:9 本日访问量:2 -
ASP 统计网站访问量
2010-11-25 15:14:52ASP网站访问量统计,可以设置基数。不用第三方网站的统计。 -
JAVA 统计网站的访问量PV,UV
2020-08-29 15:10:35JAVA 统计网站的访问量PV,UVJAVA 统计网站的访问量PV,UVJAVA 统计网站的访问量PV,UVJAVA 统计网站的访问量PV,UVJAVA 统计网站的访问量PV,UV -
servlet实现统计网站访问量
2018-12-15 01:53:28先看看实现后的效果: count.jsp ... protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... 访问量:[] 返回 -
js实现统计访问量js实现统计访问量
2011-04-12 23:45:40js实现统计访问量js实现统计访问量js实现统计访问量js实现统计访问量 -
js 实现统计网站访问量
2014-10-16 10:48:59把如下代码粘贴到html中即可: var caution = false function setCookie(name, value, expires, path, domain, secure) { ...var curCookie = name + "=" + escape(value) + ... expires=" + expires.toGMTSt -
如何实现对网站页面访问量的统计(javaweb和php)
2021-03-12 19:59:201、javaweb中如何实现对网站页面访问量的统计?用拦截器+定时更新要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截所有请求然后拦截请求需要做的是什么?从数据库取出... -
如何实现对网站页面访问量的统计?
2021-06-12 14:39:39我用的springmvc,大体讲讲本身的思路吧:css要对页面访问量统计也就是pv,主要就是拦截,写一个拦截器类实现HandlerInterceptor接口,拦截全部请求,可是须要注意的是,配置拦截器的时候spring须要排除不拦截的请求... -
网站用户访问量统计—Django
2019-08-08 20:25:30最近准备弃用Django自带的admin,将个人博客网站接入hadmin后台模板,同时想要实现用户访问量统计功能。在网上查了一下具体实现方法。众说纷纭,有接入第三方的、有js实现的、有后端代码实现的,第三方的话很简单,... -
【转载】如何统计分析网站的访问量
2019-03-09 13:34:23在网站建设完成后,很多人都希望统计到网站的访问情况,如访问了哪个页面、页面停留时间、访问者的IP地址以及访问设备、访问者所在的省份区域、访问来源等诸多信息,要实现这种功能可以自行编写代码,从http请求信息... -
使用application对象实现网站访问量统计
2018-09-28 19:54:14本例中用application对象属性存储访问人数,通过判断是否是一个新的会话来判断是否是一个新访问网站的用户。 int i=0; synchronized(application){ if(application.getAttribute("times")==null){ i=1; }... -
统计网站页面的访问量
2016-10-24 16:16:21最近做的《食盐行业信用管理与公共服务系统》项目,需要做一个网站文章页面的访问量功能。自己的解决方案,可能很简陋,但是解决了问题,而且我也给出了详细的过程。请大家多多支持,参与谈论。博客写这么长不容易啊... -
[第三方]统计网站访问量及访问来源
2019-01-08 04:19:55<script type="text/javascript" id="clustrmaps" src="//cdn.clustrmaps.com/map_v2.js?u=QEEi&d=qrVjzE_-Qo-26aJcmuyADSnDF75UCYZ9LYpHX8uiP5E"... -
如何实现网站访问量统计(html页面)
2019-04-17 11:52:42如何实现网站访问量统计 不利用站长之家实现网站访问量统计 一行代码实现访问量统计 1. 访问...5. 然后填写需要统计访问量的网页地址再点击下一步(这里可以选择刷新计数All hit... -
两行代码搞定博客访问量统计
2021-06-11 09:35:40我的博客有访客统计功能啦,看看实现的效果原始计数代码| 总访问量 次 | 总访客数 人 修改后的代码加上设置的初始值20000,| 总访问量 次 | 总访客数 人 $(document).ready(function() {var int = setinterval... -
php+mysql实现统计网站访问量(一)
2019-03-01 11:36:28//获取总的访问人数即数据表中所有ip的数量 $sql="select count(ip) from wp_jc_count"; $result=mysqli_query($conn,$sql) or die(mysqli_connect_error()); if($row=$result->fetch_row()){ $num=$row[0]; }... -
通过COOKIE统计网站的访问量
2017-11-22 10:48:00通过COOKIE统计网站的访问量 ; charset=gb2312"> <!-- .STYLE1 {font-size: 12px} .STYLE2 {color: #FF0000} --> <!-- ImageReady Slices (图书管理系统浏览目录修改.jpg) --> <TD><img src=... -
springboot项目下关于网站访问量UV统计
2020-01-18 13:42:19springboot项目下关于网站访问量UV统计 例,根据某篇文章的id,获取该文章一天内被浏览的次数,且不允许存在恶意刷新浏览次数 了解什么是UV统计 要想实现该功能,首先得了解什么是UV,PV,IP PV:页面访问量,即...