Java: Filter 过滤器
创建一个Fileter只需要两步
1. 创建一个类,实现Filter接口
public class MyFilter1 implements Filter {
// 初始化方法 @Override public void init(FilterConfig filterConfig) throws ServletException {
} // 执行过滤的方法 @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { // 过滤请求 System.out.println("MyFiter1在请求到达servlet之前的代码处理"); // 传递过滤器, 跳转到下一个过滤器 filterChain.doFilter(servletRequest,servletResponse); // 过滤响应 System.out.println("myFilter1在响应回到浏览器之前的代码处理"); } //销毁方法 @Override public void destroy() { } }
2. 配置Filter
2.1. 使用xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> ... <!--配置filter--> <filter> // 用于注册过滤器 <filter-name>myfilter1</filter-name> <filter-class>com.bjsxt.filter.MyFilter1</filter-class> </filter> <filter-mapping> // 用于设置一个Filter 所负责拦截的资源 <filter-name>myfilter1</filter-name> <!--通过请求的映射路径匹配拦截的资源--> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
<filter-name>
用于为过滤器指定一个名字,该元素的内容不能为空。<filter-class>
元素用于指定过滤器的完整的限定类名。
<filter-name>
子元素用于设置filter的注册名称。该值必须是在<filter>元素中声明过的过滤器的名字<url-pattern>
设置 filter 所拦截的请求路径(过滤器关联的URL样式)
2.2. 使用Bean配置
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean registFilter(){ FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBean.setFilter(new MyFilter()); registrationBean.addUrlPatterns("/*"); registrationBean.setName("Filter1"); registrationBean.setOrder(1); return registrationBean; } }