1、定义一个拦截器类
import com.alibaba.fastjson.JSON;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
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.HashMap;
import java.util.Map;
@Service
public class UrlLogInterceptor implements HandlerInterceptor {
private static final Log log = LogFactory.getLog(UrlLogInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
Map<String, String[]> params=new HashMap<>(request.getParameterMap());
params.remove("password");
try {
String ip=request.getHeader("X-Real-IP");
if(ip==null){
ip=request.getRemoteAddr();
}
log.info(request.getRequestURI()+" "+request.getMethod()+" user:"+request.getSession().getAttribute("user")+" "+request.getAttribute("user")+" "
+request.getHeader("X-Forwarded-For")+" "+ip+" "+JSON.toJSONString(params));
}catch (Exception e){
log.info(request.getRequestURI()+" "+request.getMethod()+" user:"+"<error>"+" "
+request.getHeader("X-Forwarded-For")+" "+request.getRemoteAddr()+" "+JSON.toJSONString(params));
}
if(request.getMethod().equals("OPTIONS")){
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
}
}
2、添加拦截器类的配置
package com.edu.platform.config;
import com.edu.platform.interceptor.LoginInterceptor;
import com.edu.platform.interceptor.UrlLogInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("SpringJavaAutowiringInspection")
@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter implements HandlerInterceptor {
@Autowired
private LoginInterceptor loginInterceptor;
@Autowired
private UrlLogInterceptor urlLogInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login",
//"/logout",
"/downloadguide",
"/loginvalidate",
"/webapp/plogin",
"/webapp/code",
"/css",
"/fonts",
"/img",
"/js",
"/plugins");
registry.addInterceptor(urlLogInterceptor);
super.addInterceptors(registry);
}
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
return false;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}