1.Filter简介
Filter是过滤器的英文名称,它是处于客户端和服务器资源文件之间的一道过滤网。通过Filter可实现URL级别的权限访问控制、敏感词汇过滤以及响应信息压缩等一些高级功能。
2.全局访问过滤器开发
复制一份“集成MyBatis”的项目代码,修改项目名称为filter。然后在项目目录“/src/main/java/com/leichuangkj/filter”下新建filter目录,并在filter目录下新建RequestFilter类,具体代码如下。
@WebFilter(filterName = "RequestFilter", urlPatterns = "/*")
public class RequestFilter implements Filter{
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("---------->>> init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
System.out.println("---------->>> doFilter");
System.out.println("请求ip:" + servletRequest.getRemoteAddr());
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("---------->>> destory");
}
}
- @WebFilter:用于将一个类声明为过滤器,该注解将会在应用部署时被容器处理,容器根据具体的属性配置将相应的类部署为过滤器。这样在Web应用中使用监听器时,便不需要在web.xml中配置监听器的描述信息。
- filterName:指定过滤器的name,等价于XML配置文件中的filter-name标签。
- urlPatterns:指定过滤器的URL匹配模式,等价于XML配置文件中的url-pattern标签。
3.启动项目
在启动类FilterApplication上添加注解@ServletComponentScan,然后启动项目。
@MapperScan(basePackages = "com.leichuangkj.filter.dao.mapper")
@ServletComponentScan
@SpringBootApplication
public class FilterApplication {
public static void main(String[] args) {
SpringApplication.run(FilterApplication.class, args);
}
}
- @ServletComponentScan:使用该注解后,Servlet、Filter、Listener可直接通过@WebServlet、@WebFilter和@WebListener注解自动注册。
4.测试
启动项目,然后在postman中请求“http://localhost:8080/user/findByName”,可在IDEA控制台查看到如下信息。
5.工程目录结构