/p>
HTML 4.0 Transitional//EN">
用ajax实现的HTML静态页面站点计数器
本站访问统计为
id="siteCount">
function sendMyGetAction(){
var url = "account.jsp?sid="+Math.random()
sendGetAction(url,stateChange);
}
function stateChange(){
if (xmlHttp.readyState==4)
{
document.getElementByIdx("siteCount").innerHTML=xmlHttp.responseText;
};
}
setTimeout(sendMyGetAction,100);
#account.jsp
contentType="text/html;charset=gb2312"%>
/**
author tianbao
added 2007-03-12
**/
static long site_count = 0;//站点计数器
static long s_count = 0;//计数累计器
static boolean hasReadFile =
false;//计数器文件没有没被读取
public synchronized void init(String
filepath){
//初始化信息
//当计数器文件没有被找到时,新建一个
try{
File file = new File(filepath);
if(!file.exists()){
file.createNewFile();
}
}catch(Exception e){
System.out.println("计数器文件创建失败"+e);
}
FileReader fr= null ;
BufferedReader br= null;
try{
fr= new FileReader(filepath);
br= new BufferedReader(fr);
String line = br.readLine();
site_count = Long.parseLong(line);//从文件中读取计数初始化计数器变量
}catch(Exception e){
}finally{
try{
if(br != null)
br.close();
if(fr != null)
fr.close();
}catch(Exception e){}
}
hasReadFile = true;//不需要再初始化了
}
public synchronized long
getSiteCount(String filepath){
//第一次调用时,初始化计数器
if(!hasReadFile){
init(filepath);
}
s_count ++;//计数累加
site_count++;//计数器进行累加
if(s_count>=10){
//如果累计器满10
//则要将站点计数器保存
FileWriter fw = null;
BufferedWriter bw = null;
try{
fw = new FileWriter(filepath);
bw = new BufferedWriter(fw);
bw.write(site_count+"");//保存计数器
bw.flush();
s_count = 0;//初始化累加器
}catch(Exception e){
}finally{
try{
if(bw != null)
bw.close();
if(fw != null)
fw.close();
}catch(Exception e){}
}
}
return site_count;
}%>
String filepath =
request.getRealPath("/")+"account.txt";
out.println(getSiteCount(filepath));
%>
#ajaxaction.js
//定义全局的xml对象
var xmlHttp = null;
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox,
Opera 8.0+, Safari
xmlHttp=new
XMLHttpRequest();
}
catch (e)
{
// Internet
Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch
(e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
if(xmlHttp == null)
alert("对不起,您的浏览器不支持Ajax");
return xmlHttp;
}
function
sendGetAction(url,myStateChanged){
//get传送
if (xmlHttp==null)
{
xmlHttp=GetXmlHttpObject();
}
//指定响应函数
xmlHttp.onreadystatechange=myStateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function getQuery(form){
//将表单元数拼成Query条件
queryString="";
var
numberElements = form.elements.length;
for(var i =
0; i < numberElements; i++) {
if(i < numberElements-1) {
queryString += form.elements[i].name+"="+
encodeURI(encodeURI(form.elements[i].value))+"&";
} else {
queryString += form.elements[i].name+"="+
encodeURI(encodeURI(form.elements[i].value));
}
}
return queryString;
}
function
sendGetForm(form,myStateChanged){
//表单GET提交
var queryString = getQuery(form);
var url = form.action;
url =
url+"?"+queryString+"&sid="+Math.random();
sendGetAction(url,myStateChanged);
}
function
sendPostAction(url,strQuery,myStateChanged){
//post传送
if
(xmlHttp==null)
{
xmlHttp=GetXmlHttpObject();
}
xmlHttp.open("POST",url,true);
xmlHttp.onreadystatechange=myStateChanged;
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(strQuery);//发送请求
};
function
sendPostForm(form,myStateChanged){
//表单post提交
var queryString = getQuery(form);
var url = form.action;
sendPostAction(url,queryString,myStateChanged);
}