`

点击量统计

    博客分类:
  • cms
 
阅读更多
阅读:<script type="text/javascript" src="NavServlet?method=click&articleId=${param.articleId }"></script>

 

//更新文章点击量记录,在一个小时之内同一个IP的连续点击,将不重复计算点击量!
	public void click(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		String articleId = request.getParameter("articleId");
		
		//首先,从ServletContext中取出一个Map
		Map visitors = (Map)getServletContext().getAttribute("visitors");
		if(visitors == null){
			visitors = new ConcurrentHashMap();
			getServletContext().setAttribute("visitors", visitors);
		}
		
		//得到客户端IP地址
		String clickIp = request.getRemoteAddr();
		
		String key = articleId+"_"+clickIp; //以文章ID和用户IP为键
		
		Date lastVisitTime = (Date)visitors.get(key);
		Article a = articleDao.findArticleById(Integer.parseInt(articleId));
		int clickNumber = a.getClickNumber(); //旧的点击量
		/**
		 * 没有访问记录、或最后一次访问在一个小时之前,需再次记录访问量
		 * 否则,无需再次记录访问量
		 */
		if(lastVisitTime == null || !withinOneHour(lastVisitTime)){
			//更新点击量
			clickNumber = articleDao.updateClickNumber(Integer.parseInt(articleId));
			visitors.put(key, new Date());
		}

		response.setContentType("text/javascript");
		response.getWriter().println("document.write('"+clickNumber+"')");
	}
	
	/**
	 * 将lastVisitTime和现在的时间相比,判断其是否在一个小时之内
	 * @param lastVisitTime
	 * @return
	 */
	private boolean withinOneHour(Date lastVisitTime){
		//现在的时间
		Calendar now = Calendar.getInstance();
		
		//上次访问时间
		Calendar last = Calendar.getInstance();
		last.setTime(lastVisitTime);
		
		last.add(Calendar.HOUR_OF_DAY, 1);
		
		if(last.before(now)){
			return false;
		}
		return true;
	}
public int updateClickNumber(int articleId) {
		SqlSession session = MyBatisUtil.getSession();
		int clickNumber = 0;
		try {
			
			clickNumber = (Integer)session.selectOne(Article.class.getName()+".selectClickNumber", articleId);
			clickNumber = clickNumber + 1;
			Article a = new Article();
			a.setId(articleId);
			a.setClickNumber(clickNumber);
			session.update(Article.class.getName()+".updateClickNumber", a);
			
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		} finally{
			session.close();
		}
		return clickNumber;
	}

 

<!-- 更新文章的点击量 -->
	<select id="selectClickNumber" parameterType="int" resultType="int">
		select clickNumber from t_article where id = #{id}
	</select>
	<update id="updateClickNumber" parameterType="Article">
		update t_article set
		clickNumber = #{clickNumber}
		where id = #{id}
	</update>	

 

分享到:
评论

相关推荐

    点击量统计系统

    《点击量统计系统详解》 在信息技术领域,点击量统计系统是数据分析的重要组成部分,它能够帮助企业、网站管理员以及内容创作者了解用户行为,优化网站性能,提高用户体验,进而提升业务表现。本文将深入探讨点击量...

    网站点击量统计网站点击量统计

    网站点击量统计网站点击量统计网站点击量统计网站点击量统计网站点击量统计网站点击量统计网站点击量统计网站点击量统计网站点击量统计网站点击量统计网站点击量统计

    网站产品点击量,新闻点击量增加的ajax实现

    本文介绍了一个简单的Ajax实现方式,用于统计网站上的产品点击量和新闻点击量。通过这种方式,不仅可以提高用户体验,还可以实时地收集用户行为数据,为网站运营提供数据支持。开发者可以根据实际需求调整代码逻辑,...

    网站热点点击统计系统

    在构建点击统计系统时,C#被用来编写服务器端的业务逻辑,例如数据验证、计算点击率、生成报表等。此外,C#还支持LINQ(Language Integrated Query),使得数据查询更加简洁高效。 点击量统计是系统的核心部分。这...

    织梦文章统计点击量

    "织梦文章统计点击量"是该系统的一个功能,旨在帮助网站管理员追踪和分析用户对文章的阅读兴趣,从而优化内容策略。这个功能通过JavaScript实现,允许在文章页面上实时记录和显示点击次数。 要在织梦网站上实现文章...

    ASP写的单个链接统计点击量插件,适用任何程序

    在给定的标题和描述中,我们关注的是一个利用ASP编写的单个链接点击量统计插件。这个插件的设计目标是通用性,能够与各种程序集成,以追踪和记录用户对特定链接的点击行为。 首先,我们来看`tongji.asp`。这可能是...

    .NET计数统计系统源码合集

    资源名称:.NET计数统计系统源码合集资源目录:【】Afritxia在线用户统计、在线编辑器、验证码图片【】Asp.net简单防刷新图片计数器源码VS2005 SQL2000【】CCSTAT多用户流量统计系统v1.3【】CCSTAT多用户流量统计...

    struts2详细网站访问总人数统计(点击率)

    总之,Struts2框架提供了灵活的机制来实现网站访问总人数统计,通过拦截器、Action和数据持久化等手段,我们可以构建一个高效、可靠的点击率统计系统。通过深入理解Struts2的工作原理和提供的工具,开发者可以更好地...

    非常完美Java实现年、月、日、周访问量统计

    在Java编程语言中,实现对年、月、日、周访问量的统计是一项常见的任务,尤其是在网站数据分析或者服务器日志处理中。这个任务涉及到日期时间处理、数据存储以及可能的数据聚合操作。以下是一些关键的知识点,可以...

    JSP 点击量统计

    JSP 点击量统计 有时候我们需要知道某个页面被访问的次数,这时我们就需要在页面上添加页面统计器,页面访问的统计一般在用户第一次载入时累加该页面的访问数上。 要实现一个计数器,您可以利用应用程序隐式对象和...

    Web后端开发-使用Filter过滤器技术,实现访问量统计-方法二使用web.xml配置的方式

    本篇文章将详细讲解如何通过使用`web.xml`配置文件来实现Filter过滤器,以实现对网站访问量的统计。这种方法是Java Web应用中的经典实践,适用于传统的基于Servlet的项目。 首先,我们需要了解Filter的基本概念。...

    基于spark streaming的实时点击量统计+源代码+文档说明

    - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! &lt;项目介绍&gt; 1、该资源内项目代码都经过测试运行成功,...

    三种方法统计网页点击次数

    在互联网世界中,统计网页点击次数是衡量网站流量和用户活跃度的重要手段。本文将详细介绍三种不同的方法来实现这一功能,这些方法涵盖了从基础到进阶的层面,适合不同技术水平的开发者。 首先,我们来看最基础的...

    Kutt 是一个现代的 URL 缩短器,支持自定义域。 缩短 URL,管理您的链接并查看点击率统计信息。

    缩短 URL,管理您的链接并查看点击率统计信息。欢迎贡献和错误报告。https://kutt.it 从 v1 迁移 Kutt 的新版本在这里。在第 2 版中,我们使用了 TypeScript,我们从 Neo4j 迁移到了 PostgreSQL 数据库以提高性能,...

    微信公众号数据统计方法.pdf

    微信公众号数据统计方法

    django项目用higcharts统计最近七天文章点击量

    在Django项目中,使用Highcharts进行最近七天文章点击量统计是一种常见的数据可视化方式。Highcharts是一个强大的JavaScript图表库,能够帮助开发者创建各种类型的图表,如折线图、柱状图、饼图等,用于展示和分析...

    C#站内数据统计代码

    4. **用户点击率统计**:点击率是衡量用户参与度的重要指标。通过跟踪用户的点击事件,可以计算出特定元素或链接的点击次数,并除以总访问量得到点击率。在C#中,可以使用JavaScript或AJAX来捕获用户点击,并通过Web...

    使用java开发青鸟迷你游戏平台

    这个平台包含了丰富的功能,如选择游戏、玩游戏并晋级、游戏币支付、游戏点击率统计以及用户信息管理。我们将从以下几个方面详细介绍这些功能的实现: 1. **游戏选择模块**: 在青鸟迷你游戏平台上,用户可以浏览...

    源代码统计器,相当不错代码量统计工具,功能不错哦

    只需选择要分析的代码文件或目录,然后点击开始统计,软件就会自动完成剩下的工作。 4. **附加功能**:除了基本的统计,该工具可能还提供了其他实用功能,例如生成报告、比较不同版本的代码量变化、分析代码质量等...

    修改帖子点击率 For Discuz!7.0.rar

    点击率是论坛统计中的一项关键数据,它反映了某个帖子被浏览的次数与论坛总访问量的比例。高点击率通常意味着帖子内容吸引了大量用户的关注,有助于提升论坛的整体活跃度。然而,人为地修改点击率可能会误导论坛管理...

Global site tag (gtag.js) - Google Analytics