Filter & Interceptor & aop
这三个选一个用即可.
Filter
使用一个链来调用方法把请求传回过滤链.
package com.roc.wiki.filter;
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);
}
}
拦截器:
Spring框架特有的,,请求日志打印 /login
过滤器的preHandler返回false, 整个业务也就结束了. 常用于登录校验,权限校验, 当你没有登陆时后面的业务逻辑也就不会执行了.
package com.roc.wiki.interceptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import

本文介绍了Spring MVC中Filter、Interceptor和AOP的区别及使用场景。Filter在Tomcat容器内,作用范围更广,用于全局请求处理;Interceptor是Spring框架特有的,适用于登录校验和权限控制;AOP则通过切面实现方法执行前后的日志记录和参数、返回结果的处理。文章展示了三者在实际应用中的日志打印实例,并讨论了它们的执行顺序。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



