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

现在要在用户管理系统增加网站计数器的功能

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

有效点击:

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

实现方案:

  1. 在init()方法中读取数据库或文件中的值,并将读取的值赋给servletContext中属性times当做它的初始值
  2. 在LoginCl.java中操作ServletContext,用户每成功登陆一次算一次有效点击
  3. 在wel.java中读取ServletContext并显示
  4. 在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>"); 
原文地址:https://www.cnblogs.com/yzy-blogs/p/6647007.html