创建一个 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")


发表评论 取消回复