⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pointratechannel.java

📁 JAVA邮件系统
💻 JAVA
字号:
  /* 
 *
 */

import java.io.*;
import java.text.*;
import java.util.*;
import java.sql.*;
import javax.servlet .http .HttpServletRequest ;
import javax.servlet .http .Cookie ;
import javax.servlet .http .HttpServletResponse;
/**
 * PointRateChannel   点击率统计
 *
 * @author Zhu Jian Min
 2000.8.22
 
*/
 
public class PointRateChannel
{
	
	
	
	public void makePointRate(Person p,HtmlOut desHtml, String time,String type,String keyword){
		//此函数用于将access.log分析成多个数组,然后将数组放到PointClass.java中
	 String sFile = "c:"+File.separatorChar +"access.log";   //文件
	 String IPAddress;//IP地址
	 String VisterDate;//访问时间
	 String VisterMethod;//访问方法
	 String WebPage;//所访问的页面
	 
	 String EveryPage[];// 每次访问某个页面为一个大的数组
	 String IPAddressB[];//粗略的IP地址
	 String VisterDateB[];//粗略的访问时间
	 String WebPageB[];//粗略的所访问的页面
	
	 int Nsum=100000;
	 EveryPage=new String[Nsum];
	 IPAddressB=new String[Nsum];
	 VisterDateB=new String[Nsum];
	 WebPageB=new String[Nsum];
	 
	 
	 
	 File file;
	 file=new File(sFile);
	 long length=file.length();//读出文件的长度
	 
	 FileReader freader;//读取文件
		// 将模板文件读到 templateContents 中
 		try
 		{
  			freader = new FileReader(sFile);
 		}catch(FileNotFoundException e)
 		{
			desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
							   "","不能读取文件","Login");
 			return ;
 		}

 		char[] contents = new char[2000000];
 		int nSize = 0;
 		try
 		{
	 		nSize = freader.read(contents,0,2000000);
			freader.close ();
 		}catch(Exception e)
 		{
			desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
							   "","不能读取文件","Login");
 			return ;
 		}
		

 		String templateContents = new String(contents,0,nSize); //将文件读到字串中		
		
		//下面是用拆分法将templateContents分析成想要的数组
		
		int nBegin=0 ,nEnd=1 ,i=0;
		
		PointClass pointClass;
		pointClass=new PointClass();
		
		
		while(nBegin<length){//读取文件分为数组
		nEnd = templateContents.indexOf("\n",nBegin);//回车
		
		if(nEnd == -1)//文件是否结束,如果结束则跳出
              	break;
	
		 EveryPage[i] = templateContents.substring (nBegin,nEnd);
		 pointClass.SetEveryPage(i,EveryPage[i]);
		 //desHtml.addString(EveryPage[i]);
		 //desHtml.addString("<p></p>");
		  
		  
		 int SubBegin=0,SubEnd;
		 SubEnd=EveryPage[i].indexOf("-",SubBegin);//取得IP地址
		 IPAddressB[i]=EveryPage[i].substring(SubBegin,SubEnd);
		 pointClass.SetIPAddressB(i,IPAddressB[i]);
		 SubBegin=SubEnd+1;
		 MakeRealIP(pointClass,i,IPAddressB[i]);
		 
		 SubEnd=EveryPage[i].indexOf("[",SubBegin);//取得所访问的页面的时间
		 SubBegin=SubEnd+1;
		 SubEnd=EveryPage[i].indexOf("+",SubBegin);
		 VisterDateB[i]=EveryPage[i].substring(SubBegin,SubEnd);
		 pointClass.SetVisterDateB(i,VisterDateB[i]);
		 SubBegin=SubEnd+1;
		 MakeRealIP(pointClass,i,VisterDateB[i]);
		 
		 SubEnd=EveryPage[i].indexOf("/",SubBegin);//取得所访问的页面
		 SubBegin=SubEnd+1;
		 SubEnd=EveryPage[i].indexOf("HTTP",SubBegin);
		 WebPageB[i]=EveryPage[i].substring(SubBegin-1,SubEnd);
		 pointClass.SetWebPageB(i,WebPageB[i]);
		 SubBegin=SubEnd+1;
		 MakeRealIP(pointClass,i,WebPageB[i]);
		 i++;
		 nBegin=nEnd+1;
		}
		
		 pointClass.SetCount(i);
		 if(type!=null)
		 MakeStat(pointClass,desHtml,type);//得到某种类型的访问次数
		
		
	}


		public void MakeStat(PointClass pointClass,HtmlOut desHtml,String type){

			
		        int SumViste=0;
				if(type!=null)
				type=type.trim();
			    ResultSet rs;		
				DBOperater DB = new DBOperater ("pointrate");
				if(type.compareTo("全部")==0){
					try 
				 {
				  ResultSet  rs1 = DB.executeQuery("select webpage from pointrate ");
					if(rs1!=null){
			   	    	
					    if(!rs1.next())
			   	       {
					     desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
									   "","没有要查询的页面类型","PointRateTemplate");
						DB.close();
			   	    	return ;
			   	        }
					//将数据库中的数据逐条的取得放到相应的数组中
						do
					  {
						
					  int count=pointClass.GetCount();
					  String webpage=rs1.getString(1);
						
					
					 
					  if(webpage!=null)
						webpage=webpage.trim();
					 
					  for(int i=1;i<count-1;i++){				  
					   if(webpage!=null)if(pointClass.GetWebPageB(i).indexOf(webpage)!=-1)//数组中含有此页面
					      SumViste++;
					  }
				
			   	    
					}while(rs1.next());
					   
					   	desHtml.addString(type+"访问的次数是"+SumViste);
						desHtml.addString("<a href=PointRateTemplate>返回</a>");
						
				   DB.close();
					}else{
					desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
									   "","调用DB时出错了","PointRateTemplate");
					DB.close();
					}
					
				}catch(Exception ex) {
					desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
									   "","统计表出错","PointRateTemplate");
					 DB.close();
					return ;
				}
				}
				else{
				try 
				{
				    rs = DB.executeQuery("select webpage from pointrate where type='"+type+"'");
					
					if(rs!=null){
			   	    	
					    if(!rs.next())
			   	       { 
					    desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
									   "","没有要查询的页面类型","PointRateTemplate");
						DB.close();
			   	    	return ;
			   	        }
					//将数据库中的数据逐条的取得放到相应的数组中
						
					   do
					  {
						
					  int count=pointClass.GetCount();
					  String webpage=rs.getString(1);
					
					 
					  if(webpage!=null)
						webpage=webpage.trim();
					 
					  for(int i=1;i<count;i++){				  
					   if(pointClass.GetWebPageB(i).indexOf(webpage)!=-1)//数组中含有此页面
					      SumViste++;
					  }
				
			   	    
					}while(rs.next());
					   	desHtml.addString(type+"访问的次数是"+SumViste);
						desHtml.addString("<a href=PointRateTemplate>返回</a>");
						
				   DB.close();
					}else{
					desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
									   "","调用DB时出错ff","PointRateTemplate");
					DB.close();
					}
					
				}catch(Exception ex) {
					desHtml.setErrorID(desHtml.USER_ANSWER_IS_INCORRECT,
									   "","统计表出错","PointRateTemplate");
					 DB.close();
					return ;
				}
				}
			return;
		}

		public void  MakeRealIP(PointClass pointClass,int i,String Str){
			if(Str!=null)
			Str=Str.trim();
			pointClass.SetIPAddress(i,Str);//IP地址
		 
		   return ;
		}

		public void  MakeRealDate(PointClass pointClass,int i ,String Str){
			if(Str!=null)
			Str=Str.trim();
			pointClass.SetVisterDate(i,Str);//访问时间
		 
		   return ;
		}

		public void  MakeRealPage(PointClass pointClass,int i,String Str){
			if(Str!=null)
			Str=Str.trim();
			pointClass.SetWebPage(i,Str);
		 
		    return ;
		}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -