1)拦截器实现HandlerInterceptor接口,重写三个方法:preHandle,postHandle,afterCompletion,
MySpringMVCConfig 实现 WebMvcConfigurer 重写addInterceptors方法,添加拦截路径及排除拦截路径。
import com.example.dao.User;
import com.example.util.UserContext;
import org.springframework.lang.Nullable;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UserConfig implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println(\"preHandle\");
User current = UserContext.getCurrent();
if(current == null){
return false;
}
return true;
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
System.out.println(\"postHandle\");
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
System.out.println(\"afterHandle\");
}
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class MySpringMVCConfig implements WebMvcConfigurer {
@Bean
public UserConfig getUserConfig(){
return new UserConfig();
}
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getUserConfig()).addPathPatterns(\"/**\").excludePathPatterns(\"/login\");
}
}
由以上代码可以实现拦截除\"/login\" 以外的所有\"/**\"方法。
2)使用AOP代理,自定注解实现拦截功能,参看另一文章。
3)使用@WebFilter注解添加拦截路径,实现Filter接口重写doFilter方法。
package com.example.config;
import org.springframework.stereotype.Component;
import javax.servlet.*;
import java.io.IOException;
@Component
@javax.servlet.annotation.WebFilter(urlPatterns = \"/*\",filterName = \"test\")
public class WebFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println(\"init_Method\");
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println(\"doFilter\");
filterChain.doFilter(servletRequest,servletResponse);
}
public void destroy() {
System.out.println(\"destoryFilter\");
}
}
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。




