spring mvc 输出当前请求的controller,url、方法名、参数、action请求耗时

spring mvc 输出当前请求的controller,url、方法名、参数、action请求耗时:

1,添加拦截器


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;

/**
*  打印所有请求信息
* @author Administrator
* @Time 2018-3-19
*  苦心修炼,水满自溢
*/
@Controller
public class ActionLogInterceptor implements HandlerInterceptor{



   private boolean open = true;

   private long startTime=0;
   private String url = null;
   private String viewName = null;
   private Date date = null;
   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse httpServletResponse, Object o) throws Exception {
      startTime = System.currentTimeMillis();
      date = new Date();
      return true;
   }

   @Override
   public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
      if (modelAndView!=null)
         viewName = modelAndView.getViewName();
   }

   @Override
   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception e) throws Exception {
      if (!open){
         return;
      }

       url = request.getRequestURI();

      DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss S");
      System.out.println("--------------------------action请求----------------------------:"+ dateFormat.format(date));
      String str = "";
      if (handler!=null){
         str =  handler.toString().trim();
         //去掉修饰符和参数
         int index = str.indexOf(" ");
         if(index!=-1) str = str.substring(index,str.length()-1).trim();
         index = str.indexOf(" ");
         if(index!=-1) str = str.substring(index+1,str.length()-1).trim();
         index = str.indexOf("(");
         if(index!=-1) str = str.substring(0,index).trim();
      }
      System.out.println("url: "+ url);
      System.out.println("method: "+ request.getMethod());
      System.out.println("调用方法:"+str);
      System.out.println("参数:");
      Map parameterMap = request.getParameterMap();
      for (Object key:parameterMap.keySet()){
         String name = (String) key;
         String value = request.getParameter(name);
         System.out.println(name + " : " + value);
      }

      if (viewName!=null)
         System.out.println("viewName: "+viewName);
      System.out.println("耗时:"+(System.currentTimeMillis()-startTime)+"毫秒");
      System.out.println("------------------------------------------------------: "+dateFormat.format(new Date()));

   }
   
}



2,在springmvc 配置文件中添加

<mvc:interceptors>
    <bean class="com.Invitebusiness.inteceptor.LogInterceptor"></bean>
</mvc:interceptors>

控制台输出:


猜你喜欢

转载自blog.csdn.net/zdb1314/article/details/80180383