Diese Methode ist einfacher, aber nicht sehr konfigurierbar.
Hinweis: Muss in den Federcontainer gescannt werden Die Methode wird nur einmal aufgerufen, nachdem der Container das Filterobjekt initialisiert hat.
<u>预处理</u>
。其中FilterChain可以将处理后的
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import java.io.IOException; @Component public class LogFilter implements Filter { private static final Logger LOG = LoggerFactory.getLogger(LogFilter.class); @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 打印请求信息 HttpServletRequest request = (HttpServletRequest) servletRequest; LOG.info("------------- LogFilter 开始 -------------"); LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod()); LOG.info("远程地址: {}", request.getRemoteAddr()); long startTime = System.currentTimeMillis(); filterChain.doFilter(servletRequest, servletResponse); LOG.info("------------- LogFilter 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime); } }
2.
3. Eine Ressource kann auch mit mehreren Filtern konfiguriert werden, die in der Reihenfolge der Konfiguration aufgerufen werden.
Wie funktioniert Interceptor? Wenn Sie es nicht verstehen, lesen Sie bitte zuerst die Einführung und kommen Sie dann zurück Registrieren Sie einen Interceptor
Unser Interceptor ist in der Interceptor-Kette registriert/** * 拦截器:Spring框架特有的,常用于登录校验,权限校验,请求日志打印 /login * @author : look-word * 2022-06-26 13:55 **/ @Component public class LogInterceptor implements HandlerInterceptor { private static final Logger LOG = LoggerFactory.getLogger(LogInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 打印请求信息 LOG.info("------------- LogInterceptor 开始 -------------"); LOG.info("请求地址: {} {}", request.getRequestURL().toString(), request.getMethod()); LOG.info("远程地址: {}", request.getRemoteAddr()); long startTime = System.currentTimeMillis(); request.setAttribute("requestStartTime", startTime); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { long startTime = (Long) request.getAttribute("requestStartTime"); LOG.info("------------- LogInterceptor 结束 耗时:{} ms -------------", System.currentTimeMillis() - startTime); } }
Das obige ist der detaillierte Inhalt vonVergleichende Analyse zeitaufwändiger Beispiele für die SpringBoot-Implementierung von Filter-Interceptoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!