如果想在页面上显示帖子或文章,或别的东西的点击率,但要防止客户端刷新时点击率的增加。简而言之,想达到的目的是:客户端刚打开该页面时,点击率加1,客户端刷新该页面时,不加1,客户端后退,再前进或点击回到该页面时,点击率不加1。
举个例子,若页面上要显示点击率(jsp)
点击率:<font color="blue"><s:property value="communityVoice.click" /></font><br>
在后台,我是这么来控制的:
// 展示帖子的详细信息。
public String show() {
//找到这个帖子
this.communityVoice = communityVoiceService.find(id);
// 防止刷新增加点击率
ActionContext ctx = ActionContext.getContext();
HttpServletRequest request = (HttpServletRequest)
ctx.getServletActionContext.HTTP_REQUEST);
HttpSession session = request.getSession();
//获取客户端的ip
String ip = request.getRemoteAddr();
//如果session中没有这个ip的信息
if (session.getAttribute(ip) == null) {
// 用户点击进入时获取其ip,写入session
session.setAttribute(ip, ip);
//点击率加1
communityVoice.setClick(communityVoice.getClick() + 1);
}
//如果session中已有该ip的信息
if (session.getAttribute(ip) != null) {
if (session.getAttribute(ip).toString().equals(ip)) {
} else {
communityVoice.setClick(communityVoice.getClick() + 1);
}
}
communityVoiceService.save(communityVoice);
return Action.SUCCESS;
}
本文介绍了一种在展示帖子点击率时防止因浏览器刷新而重复计数的方法。通过记录客户端IP并在服务器端session中检查是否已记录该IP来实现。初次访问时记录IP并增加点击率,后续刷新或返回不再增加。
1419

被折叠的 条评论
为什么被折叠?



