SSM+AJAX实现对网页访问量的统计
网页的代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>统计页面点击量</title>
</head>
<script>
function load(){
var xmlHttp; //所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
//XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}else{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
//onreadystatechange 事件当请求被发送到服务器时,我们需要执行一些基于响应每当 readyState 改变时,
//就会触发 onreadystatechangreadyState 属性存有 XMLHttpRequest 的状态信息
xmlHttp.onreadystatechange=function(){
if(xmlHttp.readyState==4 && xmlHttp.status==200){
//alert(xmlHttp.responseText);//如需获得来自服务器的响应,要使用 XMLHttpRequest 对象的 responseText或 responseXML属性。
//responseText 获得字符串形式的响应数据,responseXML 获得 XML 形式的响应数据。
var dataObj=eval("("+xmlHttp.responseText+")");//var dataObj=eval("("+data+")");//转换为 json 对象
document.getElementById("count").innerHTML=dataObj.count;//使用document.getElementById("name")可以取到页面上一个 id=name 的元素
//document.getElementById("name").value是获取这个元素的value属性
}
};
xmlHttp.open("get", "https://**.com/PageClick/pageclick/index.do?indexcount=1", true);//open(method,url,async)规定请求的类型、URL 以及是否异步
//method:请求的类型;GET 或 POST
//url:文件在服务器上的位置
//async:true(异步)或 false(同步)
xmlHttp.send();//send(string)将请求发送到服务器。string:仅用于 POST 请求
}
</script>
<body onload="load()">
index访问量:<a id="count"></a>
</body>
</html>
SSM控制器的代码
@Controller
@RequestMapping("/pageclick")
public class PageClickController{
@Resource
private PageClickService pageClickService;
@RequestMapping("/index")
public void indexclick(HttpServletRequest request, HttpServletResponse response) throws IOException {
Integer indexcount=Integer.parseInt(request.getParameter("indexcount"));
//System.out.println(indexcount);
if(indexcount!=null) {
pageClickService.indexcountset();//刷新页面一次,页面点击量+1
Integer count=pageClickService.readindexcountset();//返回页面总点击量
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
JSONObject resultJson=new JSONObject();
resultJson.put("count", count);
out.println(resultJson);
out.flush();
out.close();
}
}
}
经过映射,执行SQL语句更新数据库中网页访问量的数据
update indexpage set indexcount=indexcount+1