springboot实现过滤器
在Spring Boot中实现一个过滤器,你需要定义一个过滤器类并实现javax.servlet.Filter
接口。然后,你可以使用@WebFilter
注解或者在配置类中用@Bean
注解来注册这个过滤器。
下面是一个简单的例子:
- 创建过滤器类:
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class SimpleCORSFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse res = (HttpServletResponse) response;
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) {
// 初始化代码,如果有必要的话
}
@Override
public void destroy() {
// 销毁代码,如果有必要的话
}
}
- 注册过滤器:
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean simpleCORSFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new SimpleCORSFilter());
registration.addUrlPatterns("/*");
registration.setName("simpleCORSFilter");
registration.setOrder(1);
return registration;
}
}
在这个例子中,SimpleCORSFilter
过滤器设置了响应头,允许跨域资源共享。然后,我们通过FilterRegistrationBean
将其注册为一个Spring Bean,并指定它应用于所有URL模式("/*")。
评论已关闭