123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- package com.yihu.base.filters;
- import java.io.IOException;
- import java.util.Enumeration;
- import javax.servlet.Filter;
- import javax.servlet.FilterChain;
- import javax.servlet.FilterConfig;
- import javax.servlet.ServletException;
- import javax.servlet.ServletRequest;
- import javax.servlet.ServletResponse;
- import javax.servlet.http.HttpServletRequest;
- import net.sf.json.JSONObject;
- import com.yihu.base.ConfigUtil;
- import com.yihu.base.SessionBean;
- /**
- * 权限过滤
- *
- * @author Administrator
- *
- */
- public class ServerHitFilter implements Filter {
- public void destroy() {
- }
- /**
- * 过滤器
- */
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
- throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest) req;
-
- long start=System.currentTimeMillis();
- try{
- chain.doFilter(req, res);
- }finally{
- // saveServerHit(request,System.currentTimeMillis()-start);
- }
-
-
- }
- public void init(FilterConfig config) throws ServletException {
- //初始化异步rpc调用(如果再别的地方已经初始化,可以删除本行)
- try {
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- /**
- * 将访问日志发送给统一用户的网站统计系统
- * @param request
- * @param mills
- */
- public static void saveServerHit(HttpServletRequest request) {
- try {
- String userid = "";
- String cname = "";
- if (request.getSession() != null
- && request.getSession().getAttribute("session") != null) {
- SessionBean sessionBean = (SessionBean) request.getSession()
- .getAttribute("session");
- userid = sessionBean.getOperatorId();
- cname = sessionBean.getOperatorName();
- }
- String url = request.getRequestURI();
- if (url.endsWith(".js") || url.endsWith(".css")
- || url.endsWith(".jpg") || url.endsWith(".gif")
- || url.endsWith(".png")) {
- return;
- }
- String ip = getIpAddr(request);
- String reqParams = getAllParam(request);
- if (reqParams.length() > 2000) {
- reqParams = reqParams.substring(0, 2000);// 避免字段过长
- }
- JSONObject params = new JSONObject();
- params.put("userId", userid);
- params.put("cname", cname);
- params.put("url", url);
- params.put("other", reqParams);
- params.put("ip", ip);
- params.put("cname", cname);
- params.put("appUid", 1020);
- params.put("labelName", null);
- params.put("jd", 0);
- params.put("wd", 0);
- params.put("hb", 0);
- //TODO 保存操作日志
-
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static String getAllParam(HttpServletRequest request){
- String result="";
- try{
- HttpServletRequest r=(HttpServletRequest)request;
- Enumeration<String> paramsNames=r.getParameterNames();
- while(paramsNames.hasMoreElements()){
- String name=paramsNames.nextElement();
- if(r.getParameterValues(name)!=null&&r.getParameterValues(name).length>1)
- result+=name+":"+r.getParameterValues(name).toString()+",";
- else if(r.getParameter(name)!=null){
- result+=name+":"+r.getParameter(name)+",";
- }
- }
-
-
- }catch(Exception ex){
- ex.printStackTrace();
- }
- return result;
- }
-
- public static 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 = request.getRemoteAddr();
- }
- return ip;
- }
- }
|