之前使用作者使用过jfinal框架,觉得里面的打印路由信息的功能挺好用的,方便调试跟踪bug,不过springboot并没有天生自带这个功能啊,所以就写了一个拦截器用来打印路由信息
话不多说,直接上代码
public class UrlInterceptor implements HandlerInterceptor { private static String[] BAN_URL = { "/favicon.ico", "/error" }; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { /* * 跳过一些系统默认的 */ for(String str : BAN_URL) { if(request.getRequestURI().equals(str)) return true; } System.out.println("--------------------------------------------------"); System.out.println("Url: " + request.getRequestURL()); System.out.print("Parameter: "); Map<String, String[]> parameterMap = request.getParameterMap(); StringBuffer sb = new StringBuffer(); for(Entry<String, String[]> parameter : parameterMap.entrySet()) { sb.append(parameter.getKey() + "="); StringBuffer param = new StringBuffer(); for(String s : parameter.getValue()) { param.append(s + ","); } sb.append(param.substring(0, param.length()-1) + "&"); }
if(sb.length() > 0)
System.out.println(sb.substring(0, sb.length()-1));
else
System.out.println();
System.out.println("--------------------------------------------------"); return true; } }
写好拦截器后应该在配置类中配置这个拦截器
1 @Configuration 2 public class MyConfig implements WebMvcConfigurer { 3 4 5 @Override 6 public void addInterceptors(InterceptorRegistry registry) { 7 registry.addInterceptor(new UrlInterceptor()).addPathPatterns("/**"); 8 } 9 10 }