您的位置:首页 > 运维架构 > 网站架构

用户管理系统之增加网站计数器

2017-03-30 16:49 183 查看
现在要在用户管理系统增加网站计数器的功能

我们可以用ServletContext来实现,如果是涉及到不用用户共享数据,而这些数据量不大,同时又不希望写入数据库中,我都可以考虑使用ServletContext来实现

有效点击:

用户成功登陆一次就算为一次有效访问

实现方案:

在init()方法中读取数据库或文件中的值,并将读取的值赋给servletContext中属性times当做它的初始值
在LoginCl.java中操作ServletContext,用户每成功登陆一次算一次有效点击

在wel.java中读取ServletContext并显示

在destroy()方法中,将serveletcontext中属性times的 值写回到数据库或者文件 

代码实现:
在LoginCl中:
1、重写init()方法
//重写init方法
public void init(){

System.out.println("init被调用");

try{
//========添加网页访问次数的功能(读取部分)===========
//用户成功登陆一次就计算一次
FileReader fr = new FileReader("D://myCounter.txt");
BufferedReader br = new BufferedReader(fr);
String numVal = br.readLine();
br.close();
fr.close();

//将从文件中读取的值放入到servletContext中
this.getServletContext().setAttribute("visitTimes",numVal);

}
catch(Exception ex){
ex.printStackTrace();
}
}


2、在doGet()方法中添加计数功能
//========添加网页访问次数功能(计算部分)=========
//将ServletContext中的visitTime所对应的值++
String times=this.getServletContext().getAttribute("visitTimes").toString();
//对times的值加1再重新写回servletContext
this.getServletContext().setAttribute("visitTimes",(Integer.parseInt(times)+1));


3、重写destroy()方法
public void destroy(){

System.out.println("destroy被调用");

try{
//========添加网页访问次数的功能(写入部分)===========
//将更新的数据写回文件中
FileWriter fw = new FileWriter("D://myCounter.txt");
BufferedWriter bw = new BufferedWriter(fw);

//从servletContext中读取的值写入文件中
bw.write(this.getServletContext().getAttribute("visitTimes").toString());
bw.close();
fw.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}


在wel.java中添加显示计数器的代码:
//显示网页访问次数
pw.println("该网页被访问了"+this.getServletContext().getAttribute("visitTimes").toString()+"次<br>");
//显示主机IP地址
pw.println("您的IP地址="+req.getRemoteAddr()+"<br>");
//显示主机名
pw.println("你的主机名="+req.getRemoteHost()+"<br>");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: