1. 过滤器
可以通过实现javax.servlet.Filter接口来创建一个过滤器,然后在Spring Boot应用程序中注册该过滤器。在过滤器中,可以检查请求的URL或其他属性,并根据需要决定是否响应该请求。
例如,以下过滤器只响应URL为"/hello"的请求:
```
@Component
public class HelloFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
if ("/hello".equals(httpRequest.getRequestURI())) {
httpResponse.getWriter().write("Hello World!");
} else {
chain.doFilter(request, response);
}
}
}
```
然后,在Spring Boot应用程序的配置类中,将该过滤器注册到应用程序中:
```
@Configuration
public class AppConfig {
@Bean
public FilterRegistrationBean<HelloFilter> helloFilterRegistration() {
FilterRegistrationBean<HelloFilter> registration = new FilterRegistrationBean<>();
registration.setFilter(new HelloFilter());
registration.addUrlPatterns("/*");
return registration;
}
}
```
2. 拦截器
可以通过实现org.springframework.web.servlet.HandlerInterceptor接口来创建一个拦截器,然后在Spring Boot应用程序中注册该拦截器。在拦截器中,可以检查请求的URL或其他属性,并根据需要决定是否响应该请求。
例如,以下拦截器只响应URL为"/hello"的请求:
```
@Component
public class HelloInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if ("/hello".equals(request.getRequestURI())) {
response.getWriter().write("Hello World!");
return false;
} else {
return true;
}
}
}
```
然后,在Spring Boot应用程序的配置类中,将该拦截器注册到应用程序中:
```
@Configuration
public class AppConfig implements WebMvcConfigurer {
@Autowired
private HelloInterceptor helloInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(helloInterceptor).addPathPatterns("/**");
}
}
```
注意,拦截器需要实现WebMvcConfigurer接口,并将其注册到应用程序中。