zoukankan      html  css  js  c++  java
  • 用户管理系统之增加网站计数器

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

    我们可以用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>"); 
  • 相关阅读:
    ZJOI2019二轮游记
    Luogu P5284 [十二省联考2019]字符串问题
    Luogu P5309 [Ynoi2012]D1T1
    Luogu P5292 [HNOI2019]校园旅行
    LOJ #6052. 「雅礼集训 2017 Day11」DIV
    Luogu P5279 [ZJOI2019]麻将
    LOJ #6060. 「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set
    Luogu P5283 [十二省联考2019]异或粽子
    Luogu P5290 [十二省联考2019]春节十二响
    Luogu P5285 [十二省联考2019]骗分过样例
  • 原文地址:https://www.cnblogs.com/yzy-blogs/p/6647007.html
Copyright © 2011-2022 走看看