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>"); 
  • 相关阅读:
    排序算法之希尔排序
    排序算法之插入排序(直接插入方式)
    排序算法之选择排序
    冒泡排序算法之优化
    排序算法之冒泡排序
    逻辑运算符:与,或,非,异或
    兔子个数问题(斐波那契数列)
    代理模式
    java.lang.ClassCastException: xut.bookshop.entity.User_$$_javassist_3 cannot be cast to javassist.util.proxy.Proxy
    org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 32; 元素类型为 "key" 的内容必须匹配 "(column)*"
  • 原文地址:https://www.cnblogs.com/yzy-blogs/p/6647007.html
Copyright © 2011-2022 走看看