创建一个 SpringBoot 项目
选择 Spring Initializr,选择 Spring Web Starter, 项目名称如下: com.example.demo
编写拦截器
创建 interceptor 文件夹,在 MyInterceptor 中写入以下代码
public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("我的拦截器"); 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 { } }
注册拦截器
创建 config 文件夹, 在 InterceptorConfig 中写入以下代码
@Configuration public class InterceptorConfig implements WebMvcConfigurer{ @Override public void addInterceptors(InterceptorRegistry registry) { // 注册拦截器 InterceptorRegistration ir = registry.addInterceptor(new MyInterceptor()); // 添加拦截请求 ir.addPathPatterns("/*"); // 添加不拦截的请求 ir.excludePathPatterns("/login"); // 以上三句代码可以使用下面的代替 // registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*").excludePathPatterns("/login"); } }
编写 Controller
创建 controller 文件夹,在 LoginController 中写入以下代码
@RestController public class LoginController { @GetMapping("/login") public String Login(){ return "login"; } @GetMapping("/add") public String add(){ return "add"; } }创建过滤器
创建 filter 文件夹,在 MyFilter 中写入以下代码
import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; // 自定义过滤器 // 以下为 JavaEE 的注解,需要额外配置,以便 SpringBoot 对其进行扫描 @WebFilter(urlPatterns = "/*") public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void destroy() { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("我的过滤器"); filterChain.doFilter(servletRequest, servletResponse); } }
方法一
在 DemoApplication 中,加入以下注解
@SpringBootApplication // 会扫描 servlet 相关的注解 @ServletComponentScan(basePackages = "com.example.demo.filter") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
方法二
在 config 文件夹中创建 FilterConfig 文件,加入以下内容
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean myFilterRegistration(){ FilterRegistrationBean regist = new FilterRegistrationBean(new MyFilter()); // 过滤全部请求 regist.addUrlPatterns("/*"); return regist; } }将 DemoApplication 中的以下内容注释掉即可
// 会扫描 servlet 相关的注解 //@ServletComponentScan(basePackages = "com.example.demo.filter")
发表评论 取消回复