2dffd9d988c3f45fb4163e22b4037331117258f6.svn-base 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package com.yihu.base.filters;
  2. import java.io.IOException;
  3. import java.util.Enumeration;
  4. import javax.servlet.Filter;
  5. import javax.servlet.FilterChain;
  6. import javax.servlet.FilterConfig;
  7. import javax.servlet.ServletException;
  8. import javax.servlet.ServletRequest;
  9. import javax.servlet.ServletResponse;
  10. import javax.servlet.http.HttpServletRequest;
  11. import net.sf.json.JSONObject;
  12. import com.yihu.base.ConfigUtil;
  13. import com.yihu.base.SessionBean;
  14. /**
  15. * 权限过滤
  16. *
  17. * @author Administrator
  18. *
  19. */
  20. public class ServerHitFilter implements Filter {
  21. public void destroy() {
  22. }
  23. /**
  24. * 过滤器
  25. */
  26. public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
  27. throws IOException, ServletException {
  28. HttpServletRequest request = (HttpServletRequest) req;
  29. long start=System.currentTimeMillis();
  30. try{
  31. chain.doFilter(req, res);
  32. }finally{
  33. // saveServerHit(request,System.currentTimeMillis()-start);
  34. }
  35. }
  36. public void init(FilterConfig config) throws ServletException {
  37. //初始化异步rpc调用(如果再别的地方已经初始化,可以删除本行)
  38. try {
  39. } catch (Exception e) {
  40. // TODO Auto-generated catch block
  41. e.printStackTrace();
  42. }
  43. }
  44. /**
  45. * 将访问日志发送给统一用户的网站统计系统
  46. * @param request
  47. * @param mills
  48. */
  49. public static void saveServerHit(HttpServletRequest request) {
  50. try {
  51. String userid = "";
  52. String cname = "";
  53. if (request.getSession() != null
  54. && request.getSession().getAttribute("session") != null) {
  55. SessionBean sessionBean = (SessionBean) request.getSession()
  56. .getAttribute("session");
  57. userid = sessionBean.getOperatorId();
  58. cname = sessionBean.getOperatorName();
  59. }
  60. String url = request.getRequestURI();
  61. if (url.endsWith(".js") || url.endsWith(".css")
  62. || url.endsWith(".jpg") || url.endsWith(".gif")
  63. || url.endsWith(".png")) {
  64. return;
  65. }
  66. String ip = getIpAddr(request);
  67. String reqParams = getAllParam(request);
  68. if (reqParams.length() > 2000) {
  69. reqParams = reqParams.substring(0, 2000);// 避免字段过长
  70. }
  71. JSONObject params = new JSONObject();
  72. params.put("userId", userid);
  73. params.put("cname", cname);
  74. params.put("url", url);
  75. params.put("other", reqParams);
  76. params.put("ip", ip);
  77. params.put("cname", cname);
  78. params.put("appUid", 1020);
  79. params.put("labelName", null);
  80. params.put("jd", 0);
  81. params.put("wd", 0);
  82. params.put("hb", 0);
  83. //TODO 保存操作日志
  84. } catch (Exception e) {
  85. e.printStackTrace();
  86. }
  87. }
  88. public static String getAllParam(HttpServletRequest request){
  89. String result="";
  90. try{
  91. HttpServletRequest r=(HttpServletRequest)request;
  92. Enumeration<String> paramsNames=r.getParameterNames();
  93. while(paramsNames.hasMoreElements()){
  94. String name=paramsNames.nextElement();
  95. if(r.getParameterValues(name)!=null&&r.getParameterValues(name).length>1)
  96. result+=name+":"+r.getParameterValues(name).toString()+",";
  97. else if(r.getParameter(name)!=null){
  98. result+=name+":"+r.getParameter(name)+",";
  99. }
  100. }
  101. }catch(Exception ex){
  102. ex.printStackTrace();
  103. }
  104. return result;
  105. }
  106. public static String getIpAddr(HttpServletRequest request) {
  107. String ip = request.getHeader("x-forwarded-for");
  108. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  109. ip = request.getHeader("Proxy-Client-IP");
  110. }
  111. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  112. ip = request.getHeader("WL-Proxy-Client-IP");
  113. }
  114. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  115. ip = request.getRemoteAddr();
  116. }
  117. return ip;
  118. }
  119. }