SpringBoot学习-(十一)SpringBoot过滤器
来源:互联网 发布:python最优化 例子 编辑:程序博客网 时间:2024/06/05 17:19
1.目录结构
2.编写过滤器
package com.ahut.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import org.springframework.stereotype.Component;/** * * @ClassName: MyFilter * @Description:自定义过滤器 * @author cheng * @date 2017年9月26日 上午9:19:38 */// 加入spring ioc容器@Component/* * @WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器 * 属性filterName声明过滤器的名称,可选 * 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性) */@WebFilter(filterName = "myFilter", urlPatterns = "/*")public class MyFilter implements Filter { /** * 执行过滤操作 */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); System.out.println("执行过滤操作。。。"); } /** * 过滤器初始化 */ @Override public void init(FilterConfig config) throws ServletException { System.out.println("过滤器初始化。。。"); } /** * 过滤器销毁 */ @Override public void destroy() { System.out.println("过滤器销毁。。。"); }}
注意:过滤器在服务器启动时初始化,服务器关闭时销毁!!!
3.多个过滤器执行的顺序问题
目录结构:
过滤器代码:
package com.ahut.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;/** * * @ClassName: MyFilter * @Description:自定义过滤器 * @author cheng * @date 2017年9月26日 上午9:19:38 */// 加入spring ioc容器@Component/* * @WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器 * 属性filterName声明过滤器的名称,可选 * 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性) */@WebFilter(filterName = "myFilter", urlPatterns = "/*")//指定过滤器的执行顺序,值越小越靠后执行@Order(1)public class MyFilter implements Filter { /** * 执行过滤操作 */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); System.out.println("执行过滤操作。。。111"); } /** * 过滤器初始化 */ @Override public void init(FilterConfig config) throws ServletException { System.out.println("过滤器初始化。。。111"); } /** * 过滤器销毁 */ @Override public void destroy() { System.out.println("过滤器销毁。。。111"); }}
package com.ahut.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;import org.springframework.core.annotation.Order;import org.springframework.stereotype.Component;/** * * @ClassName: MyFilter2 * @Description:自定义过滤器 * @author cheng * @date 2017年9月26日 上午9:19:38 */// 加入spring ioc容器@Component/* * @WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器 * 属性filterName声明过滤器的名称,可选 * 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性) */@WebFilter(filterName = "myFilter2", urlPatterns = "/*")//指定过滤器的执行顺序,值越大越先执行@Order(2)public class MyFilter2 implements Filter { /** * 执行过滤操作 */ @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); System.out.println("执行过滤操作。。。222"); } /** * 过滤器初始化 */ @Override public void init(FilterConfig config) throws ServletException { System.out.println("过滤器初始化。。。222"); } /** * 过滤器销毁 */ @Override public void destroy() { System.out.println("过滤器销毁。。。222"); }}
执行结果:
过滤器初始化。。。222过滤器初始化。。。111执行过滤操作。。。222执行过滤操作。。。111过滤器销毁。。。222过滤器销毁。。。111
结论:
通过@Order(i)注解可以控制过滤器的执行顺序
i的值越小,过滤器越靠后执行
i的值越大,过滤器越先执行
阅读全文
0 0
- SpringBoot学习-(十一)SpringBoot过滤器
- SpringBoot学习-(五)SpringBoot测试
- springboot学习笔记(十一) log4j
- SpringBoot 学习记录(十一): hazelcast+swagger2
- SpringBoot学习-(二)SpringBoot注解和配置
- SpringBoot学习-(三)SpringBoot开发Web
- SpringBoot学习-(四)SpringBoot配置Druid连接池
- SpringBoot学习-(六)SpringBoot与Mybatis整合
- SpringBoot学习-(七)SpringBoot分页插件PageHelper
- SpringBoot学习-(八)SpringBoot中的新注解
- SpringBoot学习-(九)SpringBoot中的AOP
- SpringBoot学习-(十)SpringBoot日志处理
- SpringBoot学习-(十二)SpringBoot中建立WebSocket连接
- SpringBoot学习-(十五)SpringBoot热部署
- SpringBoot学习-(十七)SpringBoot整合Shiro
- SpringBoot学习-(十八)SpringBoot整合EhCache
- SpringBoot学习-(十九)SpringBoot定时器#Schedule
- SpringBoot开发详解(十一) -- Redis在SpringBoot中的整合
- 自定义View实现listView的左划删除
- 设计模式
- list对象根据字段去掉重复元素
- myeclipse打开时出现An error has occured,See error log for...
- 十天 教你从创意到上线APP
- SpringBoot学习-(十一)SpringBoot过滤器
- 节点插入方法
- Intellij IDEA 配置Tomcat远程调试
- 验证控件公用属性表
- 9.25+9.27 联考
- for循环的优化
- linux创建账户并自动生成主目录和主目录下的文件
- 第十二章 二叉搜索树
- VS2010突然不能输入中文,输入中文会变成???