📄 pagehitcount.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 + -