如果想在页面上显示帖子或文章,或别的东西的点击率,但要防止客户端刷新时点击率的增加。简而言之,想达到的目的是:客户端刚打开该页面时,点击率加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;
}