JAva(簡単なWebサイトトラフィック統計)フィルタリスナー構成
/**
* @author : zhujiang
* @version :2010-5-17 10:25:33
*
*/
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
public class ApplicationListener implements ServletContextListener {
private static final Logger logger = Logger.getLogger(ApplicationListener.class);
public void contextDestroyed(ServletContextEvent arg0) {
ServletContext sc = arg0.getServletContext();
Integer count = (Integer) sc.getAttribute("AccessCount");
try {
PrintWriter out = new PrintWriter(new FileWriter("c:/count.txt"));//
System.out.println("count:" + count);
logger.error("count:"+count);
out.print(count);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void contextInitialized(ServletContextEvent arg0) {
Integer count = 0;
ServletContext sc = arg0.getServletContext();
try {
Scanner in = new Scanner(new FileReader("c:/count.txt"));// ,
count = in.nextInt();
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
sc.setAttribute("AccessCount", count);
}
}
//
/**
* @author : zhujiang
* @version :2010-5-17 10:29:45
*
*/
import java.io.FileWriter;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.apache.struts2.ServletActionContext;
import com.duanqu.wap.action.booklt.BookltAction;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;
@SuppressWarnings("serial")
public class AccessInterceptor implements Interceptor {
private static final Logger logger = Logger.getLogger(AccessInterceptor.class);
private String id;
public void destroy() {
}
public void init() {
}
@SuppressWarnings("unchecked")
public String intercept(ActionInvocation ai) throws Exception {
ServletContext sc = ServletActionContext.getServletContext();
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
if (!session.getId().equals(id)) {
Integer count = (Integer) sc.getAttribute("AccessCount");// ,
sc.setAttribute("AccessCount", count + 1);
PrintWriter out = new PrintWriter(new FileWriter("c:/count.txt"));//
logger.error("AccessCount:"+count);
id = session.getId();
logger.error("id:"+id);
System.out.println("count:" + count);
logger.error("count:"+count);
out.print(count);
out.flush();
out.close();
}
String result = ai.invoke();
return result;
}
}
struts構成フィルタ
アクション構成に設定
*
Web.xmlリスニング
com.duanqu.common.ApplicationListener