当前位置: 首页 > news >正文

过滤器的创建和执行顺序

过滤器的创建和执行顺序

8.1.1创建并配置过滤器

P143 重点是如何创建并配置(xml)

1.创建

public class EncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {    }    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            servletRequest.setCharacterEncoding("UTF-8");
            servletResponse.setCharacterEncoding("UTF-8");
            filterChain.doFilter(servletRequest,servletResponse);
    }    @Override
    public void destroy() {    }
}

2.配置

  • 注解方式:所有路径不能是多个*,可以配置多个过滤路径
  • xml方式

3.注解方式

@WebFilter("/*")
@WebFilter(filterName = "myFilter",urlPatterns = {"/*"})

4.xml方式

<filter>
    <filter-name>hellohello</filter-name>
    <filter-class>demo.HelloServlet</filter-class>
</filter>
<filter-mapping>
    <filter-name>hellohello</filter-name>
    <url-pattern>/hellohello</url-pattern>
</filter-mapping>
<!--    可以配置多个路径-->
    <filter-mapping>
        <filter-name>hellohello</filter-name>
        <url-pattern>/hellohello2</url-pattern>
    </filter-mapping>

5.基于xml的案例

public class HelloServlet implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("我是过滤器");}@Overridepublic void destroy() {}
}

8.1.2 执行过滤器的详细过程

图1 Filter执行过程图2

8.1.3过滤器执行顺序

过滤器链的执行顺序

  • 先在web.xml中查找过滤器执行

在web.xml中,则按照配置的<filter-mapping>顺序执行

  • 再在注解的过滤中中选择执行:就是按照包名类名等的顺序执行

@WebFilter 按字母序执行

 

http://www.lryc.cn/news/25465.html

相关文章:

  • JDK1.8 ConcurrentHashMap
  • 参考 Promise/A+ 规范和测试用例手写 Promise
  • yolov5数据集制作
  • 主板EC程序烧写异常致无法点亮修复经验
  • 【Java爬取赛事网站】命令行输出(仅供学习)
  • redis主从复制原理
  • buu刷题(第一周)
  • 算法训练营 day62 单调栈 每日温度 下一个更大元素 I
  • ChIP-seq 分析:Peak 注释与可视化(9)
  • ABB机器人配置DeviceNet总线IO板以及信号分配的具体方法示例
  • 2023 年网络安全漏洞的主要原因
  • 剑指 Offer 34. 二叉树中和为某一值的路径
  • 2023前端vue面试题(边面边更)
  • webpack配置完全指南
  • juju创建lxd容器时如何使用本地镜像(by quqi99)
  • 后端程序员学习前端开发之第一步环境搭建
  • 【记录问题】RuntimeError:working outside of application context. Flask使用SQLAlchemy数据库
  • 自动化测试难点案例分析,其实自动化你用错方向还不如不用
  • 866363-70-4,N3-C5-NHS ester,叠氮-C5-NHS 主要物理性质分享
  • 字符流定义及如何深入理解字符流的编码
  • 什么是pod类型
  • 2023年中小企业实施智能制造的建议
  • 【LeetCode】剑指 Offer 19. 正则表达式匹配 p124 -- Java Version
  • linux和windows中安装emqx消息服务器
  • 【XXL-JOB】XXL-JOB的搭建和使用
  • HCIP-5OSPF基本原理及基本配置学习笔记
  • Migrate your data into databend with DataX
  • ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)
  • 有限元中三角形的一些积分公式
  • 【docker-compose】安装mongodb