springboot实现过滤器实例
时间: 2023-07-12 13:08:08 浏览: 171
在 Spring Boot 中,可以使用 FilterRegistrationBean 类来注册过滤器。下面是一个实现过滤器的示例:
1. 创建一个实现了 javax.servlet.Filter 接口的过滤器类,例如:
```java
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 初始化方法
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 过滤方法
chain.doFilter(request, response);
}
@Override
public void destroy() {
// 销毁方法
}
}
```
2. 创建一个配置类,用于注册过滤器,例如:
```java
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<MyFilter> myFilter() {
FilterRegistrationBean<MyFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new MyFilter());
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}
```
在上面的配置类中,我们创建了一个名为 myFilter 的过滤器,并将它注册到了所有 URL 上。
3. 运行程序,可以看到过滤器已经生效了。可以在 MyFilter 类中的 doFilter 方法中添加自己的业务逻辑,例如:
```java
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String path = httpRequest.getRequestURI();
if (path.contains("admin")) {
// 如果请求的路径包含 admin,就拦截请求
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.sendRedirect("/login");
} else {
// 否则继续处理请求
chain.doFilter(request, response);
}
}
```
这个过滤器的作用是,如果用户请求的路径包含 "admin",则重定向到登录页面,否则继续处理请求。
阅读全文