Tomcat 的 Valve 机制?
Tomcat 面试题发布于
一、定义
Valve(阀门)是 Tomcat 的拦截器机制,类似 Servlet Filter,但作用在容器层面(Engine/Host/Context)。
二、常用 Valve
- AccessLogValve:访问日志。
- RemoteAddrValve:IP 黑白名单。
- RemoteHostValve:主机名黑白名单。
- SingleSignOnValve:单点登录。
- CorsFilter 实际是 Filter 不是 Valve。
三、配置示例
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="access" suffix=".log"
pattern="%h %l %u %t "%r" %s %b"/>
四、与 Filter 区别
- Valve 是 Tomcat 特有,容器级。
- Filter 是 Servlet 规范,应用级。
- Valve 可以做 Filter 做不到的事,如修改 Request 对象本身。