第 5 章 · 途中的关卡:管道上的组件 章节摘要:请求在容器里穿行时,一路要过好几道关卡、见几位后勤官。本章讲四位角色:Valve 是容器层的阀门,Filter 是应用层的过滤器,两者像管道上的两道闸,位置与作用域不同;Realm 是身份档案库,负责认证与授权的裁决;Listener 是事件广播员,JNDI 则是资源调度台,把连接池这类资源登记在容器里供应用按名取用。学完本章,请求从进容器到抵终点之间"被谁检查过、被谁服务过"你都能说得一清二楚。 学习目标 能说出 Valve 与 Filter 的四个差异:挂载层、作用域、配置位置、能否访问应用类。 能配置 AccessLogValve 与 RemoteIpValve,并编写一个最小自定义阀门。
章节摘要:请求在容器里穿行时,一路要过好几道关卡、见几位后勤官。本章讲四位角色:Valve 是容器层的阀门,Filter 是应用层的过滤器,两者像管道上的两道闸,位置与作用域不同;Realm 是身份档案库,负责认证与授权的裁决;Listener 是事件广播员,JNDI 则是资源调度台,把连接池这类资源登记在容器里供应用按名取用。学完本章,请求从进容器到抵终点之间"被谁检查过、被谁服务过"你都能说得一清二楚。
金句:Valve 管的是城里的规矩,Filter 管的是店里的规矩——城规写在 server.xml,店规写在应用里,两者叠加才是请求被检查的全貌。
5.1 把"关卡"这个概念立在容器与应用两个层面,5.2 是关卡中最重的一类(身份裁决)展开,5.3 转向"不拦请求但服务请求"的两位后勤。三节合起来覆盖管道上全部非业务组件,第 6 章的过滤器链执行细节是 5.1 的续篇。
5.1 两道闸的位置 5.2 身份裁决 5.3 后勤系统 ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Valve 容器层 │ │ Realm 档案库│ │ Listener 事件│ │ Filter 应用层│ ────> │ BASIC FORM │ ────> │ JNDI 资源台 │ │ 顺序与作用域 │ │ 约束与角色 │ │ 定义与查找 │ └─────────────┘ └─────────────┘ └─────────────┘ 拦截类组件 身份特例 服务类组件
前置:第 4 章的容器嵌套图(阀门挂点靠它)、web.xml 与 context.xml 两份登记表(本章大量配置落在这两份文件)。
后续延伸:第 6 章首节把 Filter 链的执行机制讲到方法级;Realm 的生产替代方案(数据源 Realm、LDAP)在第 7 章安全加固中作为检查项出现。