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

📄 pagehitcount.java

📁 java swing源码 欢迎下载 有问题请联系 我一定负责到底
💻 JAVA
字号:
/**
 * 点击率
 */
package com.NCL;

import java.io.File;
import java.util.*;
import java.util.Timer;
import com.NCL.axis.axisType;
import com.sinosoft.common.*;
import javax.servlet.http.HttpServletRequest;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.NCL.axis.Batch.*;

public class PageHitCount{
	
	private static HashSet connectPages = new HashSet();
	public static Timer timer = new Timer();
	public static int hitCount=0;
	public final int maxCount=1000;
	public final int maxErrCount=100000000;
	public static boolean timerStatt;
	private Document documentInput ;	
	public Element PageDicInfo ;
	public static boolean priceState = false;
	public static boolean priceStateGS = false;
	public static boolean priceStateZZ = false;
	/**
	 * 计算点击率
	 * @param pageID		点击页
	 * @param getRequest	对象
	 * @return	boolean
	 */
	public boolean AddCount(String pageID,HttpServletRequest getRequest){
		if(hitCount==0&&!timerStatt){
			timer.schedule(new PageTask(), 1000*60, 1000*60*60*2);
			timerStatt = true;
			System.out.println("timer is start ");
		}
		//投连
		if(!priceState){
			priceState = new InvestJoinInsert().PriceInfo();
		}
		//金包银
		if(!priceStateGS){
			priceStateGS = new InsuaccInsert().PriceInfo();
		}
		//至尊双利
		if(!priceStateZZ){
			priceStateZZ = new ZzslInsert().PriceInfo();
		}
		getPageDic();
		setPageInfo(pageID,getRequest);
		if(this.hitCount>=this.maxCount){
			insertHitCount();
		}
		if(this.hitCount>=maxErrCount){
			synchronized(connectPages){
				connectPages.clear();
				hitCount=0;
			}
		}
			
		return true;
	}
	/**
	 * 获取点击页
	 *
	 */
	public void getPageDic(){
		SAXReader reader = new SAXReader();
		String fileName = axisType.class.getResource("").getPath().replaceAll("/WEB-INF/classes/com/NCL/axis", "").replaceAll("%20", " ") + "global/xml/";
		fileName += "pageDictionary.xml";
		try {
			documentInput = reader.read(new File(fileName));
			Element ele = documentInput.getRootElement();
			PageDicInfo = ele.element("PageDicInfo");
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			System.out.println("PageHitCount.getPageDic():" + e.getMessage());
			e.printStackTrace();
		}
	}
	/**
	 * 设置点击信息
	 * @param pageID	点击页
	 * @param getRequest	对象
	 * @return	boolean
	 */
	private boolean setPageInfo(String pageID,HttpServletRequest getRequest){
		if(PageDicInfo==null){
			return false;
		}
		try{
			Element pEle = PageDicInfo.element("Page"+pageID);
			if(pEle!=null){
				PageInfo pInfo =new PageInfo();
				pInfo.pageID = pageID;
				pInfo.pageName = getEleText(pEle,"PageName");
				pInfo.pagePath = getEleText(pEle,"PagePath");
				pInfo.MakeDate = Data.getCurrentDateTime("yyyy-MM-dd HH:mm:ss");
				pInfo.fistIP = Data.SQLOutValue(getIpAddr(getRequest));
				pInfo.secondIP = Data.SQLOutValue("unknown".equals(getRequest.getHeader("x-forwarded-for"))? "" : getRequest.getHeader("x-forwarded-for"));
				pInfo.localIP = java.net.InetAddress.getLocalHost().getHostAddress();
				
				synchronized(connectPages){
					connectPages.add(pInfo);
					hitCount++;
				}
			}
		}catch(Exception e){
			System.out.println("PageHitCount.setPageInfo() : " + e.getMessage());
			return false;
		}
		return true;
	}
	/**
	 * 获取pEle中与getName关联的值
	 * @param pEle 对象
	 * @param getName	指定键
	 * @return	String
	 */
	private String getEleText(Element pEle,String getName){
		String getText = "";
		try{
			getText = pEle.element(getName).getText();
		}catch(Exception e){
			System.out.println("PageHitCount.getEleText():" + e.getMessage());
			return "";
		}
		return getText;
	}
	/**
	 * 计算点击率
	 *
	 */
	public static void insertHitCount(){
		PageHits ph = new PageHits();
		synchronized(connectPages){
			Iterator iter = connectPages.iterator();
			PageInfo pinfo = null;
			String [] countHits = null;
			while(iter.hasNext()){
				countHits = new String[7];
				pinfo = (PageInfo)iter.next();
				countHits[0] = Data.SQLOutValue(pinfo.pageID);
				countHits[1] = Data.SQLOutValue(pinfo.pageName);
				countHits[2] = Data.SQLOutValue(pinfo.fistIP);
				countHits[3] = Data.SQLOutValue(pinfo.secondIP);
				countHits[4] = Data.SQLOutValue(pinfo.localIP);
				countHits[5] = Data.SQLOutValue(pinfo.MakeDate);
//				countHits[5] = Data.SQLOutValue("sysdate");
				countHits[6] = Data.SQLOutValue(pinfo.pagePath);
				ph.strList.add(countHits);
				hitCount--;
			}
			if(ph.createSubmit())
				connectPages.clear();
		}
	}
	/**
	 * 获取IP
	 * @param request	对象
	 * @return	String
	 */
	public String getIpAddr(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = "";
		}
		return ip;
	}

}
/**
 * 点击信息
 * @author Administrator
 *
 */
class PageInfo{
	public String pageID;
	public String pageName;
	public String fistIP;
	public String secondIP;
	public String localIP;
	public String MakeDate;
	public String pagePath;
}
/**
 * 执行计数
 * @author Administrator
 *
 */
class PageTask extends java.util.TimerTask{
	/**
	 * 启动线程
	 */
    public void run(){
        // TODO Auto-generated method stub
    	PageHitCount.insertHitCount();
    	
    }
}

⌨️ 快捷键说明

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