package com.mmall.controller.common.interceptor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
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.util.Arrays;
import java.util.Iterator;
import java.util.Map;//拦截器初始化类
@Slf4jpublic classAuthorityInterceptor implements HandlerInterceptor {//controller处理之前
@Overridepublicboolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
log.info("preHandle");//请求中Controller中的方法名
HandlerMethod handlerMethod =(HandlerMethod) o;//解析handlerMethod
String methodName =handlerMethod.getMethod().getName();
String className=handlerMethod.getBean().getClass().getSimpleName();//解析参数,具体的参数key以及value是什么,我们打印日志
StringBuffer requestParamBuffer = newStringBuffer();
Map paramMap=httpServletRequest.getParameterMap();
Iterator it=paramMap.entrySet().iterator();while(it.hasNext()) {
Map.Entry entry=(Map.Entry) it.next();
String mapKey=(String) entry.getKey();
String mapValue=StringUtils.EMPTY;//httpServletRequest这个参数的map,里面的value返回的是一个String[]
Object obj =entry.getValue();if(obj instanceof String[]) {
String[] strs=(String[])obj;
mapValue=Arrays.toString(strs);
}
requestParamBuffer.append(mapKey).append("=").append(mapValue);
}//还没有写完
return true;
}//controller 处理之后
@Overridepublic voidpostHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
log.info("postHandle");
}//所有处理完成后调用
@Overridepublic voidafterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
log.info("afterCompletion");
}
}