Tomcat的过滤器主要由Filter、FilterChain组成,FilterChain包含一个Filter数组.当Wrapper执行FilterChain的doFilter(request,response)方法时,FilterChain首先调用第一个Filter的doFilter(request,response,filterchain)方法,当第一个filter做完过滤操作后,它又会调用filterchain的doFilter方法,此时filterchain的当前filter已变为第二个filter,第二个filter又执行dofilter方法,依此类推,直至所有过滤器都执行完毕
1.接口
public interface Filter {
.....
//执行过滤
public void doFilter ( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException;
}
public interface FilterChain {
public void doFilter ( ServletRequest request, ServletResponse response ) throws IOException, ServletException;
}
2.实现例子
class ApplicationFilterChain implements FilterChain {
//pos为当前filter的所在位置,n为filters数组的长度
if (pos < n) {
//pos++执行后,把filterchain的当前filter指向下一个
ApplicationFilterConfig filterConfig = filters[pos++];
Filter filter = null;
try {
filter = filterConfig.getFilter();
//filter执行过滤操作
filter.doFilter(request, response, this);
}
...
}
}
class SampleFilter implements Filter {
........
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)
throws IOException, ServletException {
//do something
.....
//request, response传递给下一个过滤器进行过滤
chain.doFilter(request, response);
}
}
过滤器可以在web.xml中进行配置
分享到:
相关推荐
4. "Tomcat源码分析(4)容器处理链接之责任链模式.doc":分析了Tomcat如何利用责任链模式来处理请求,使得请求可以被多个处理器(如过滤器)有序处理。 5. "tomcat加载类的顺序.doc":详细说明了Tomcat加载类的具体...
Apache Tomcat源码分析 Apache Tomcat是一款广泛应用的开源Java Servlet容器,它是Java EE Web应用程序的标准实现。Tomcat源码的深入理解对于Java Web开发者来说是至关重要的,它可以帮助我们了解HTTP服务器的工作...
- **web.xml**:每个Web应用都有一个部署描述符(web.xml),定义了应用的配置信息,如Servlet、过滤器和监听器的映射。 - **Context配置**:通过server.xml文件配置Context,设置应用的根目录、欢迎页面、错误...
### Tomcat源码研究知识点概览 #### 1.1 Catalina.bat脚本解析 - **脚本功能**:`catalina.bat`是Tomcat启动过程中的关键脚本之一,其主要作用在于构建合适的Java命令行参数,进而启动Tomcat服务。此脚本根据环境...
- **web.xml**: 应用的部署描述符,定义Servlet、过滤器和监听器等组件。 - **server.xml**: Tomcat的全局配置文件,包含Connectors、Containers以及其他服务器设置。 - **context.xml**: 应用级别的配置,定义...
- **Valve**:类似于过滤器,可以在请求进入容器之前或响应返回给客户端之后进行干预操作,常用来实现日志记录、权限验证等功能。 - **Manager**:用于管理会话状态,提供会话跟踪机制。 总之,Tomcat作为一款成熟...
通过运行源码,我们可以观察到Tomcat的启动过程,这涉及到加载配置、初始化各种组件、注册Servlet和过滤器、以及启动监听器。同时,也可以设置断点,逐步调试,深入理解Tomcat如何处理HTTP请求,如何调用Servlet,...
7. **安全性**:研究Tomcat的安全配置和过滤器,以保护Web应用不受攻击。 8. **部署与配置**:了解context.xml、server.xml等配置文件的用法,掌握自定义部署策略。 总的来说,Tomcat源码包为Java Web开发者提供了...
10. **扩展与集成**:了解Tomcat与其他Java EE组件(如EJB、JMS等)的集成,以及如何自定义Tomcat的行为,例如添加过滤器、监听器等。 通过阅读《深入剖析Tomcat源码》这本书,你可以从源代码层面理解Tomcat的工作...
- **web.xml**:每个Web应用程序的部署描述符,定义Servlet、过滤器、监听器等。 - **context.xml**:应用级别的配置,可以包含全局JNDI资源、连接池等。 3. **内存配置**: - 在启动Tomcat时,可以通过`-Xms`和...
5. **Tomcat源码分析** 对于Tomcat的实现细节,主要关注以下几点: - **启动/初始化**:Tomcat启动时会解析web.xml,创建并初始化应用的组件。 - **并发线程模式**:Tomcat使用线程池来处理并发请求,提高性能。 ...
6. **自定义与扩展**:对于开发者而言,理解Tomcat源码意味着可以自定义Tomcat的行为,比如编写新的连接器、Valves(请求处理管道中的节点)或者过滤器,以满足特定的业务需求。 7. **学习与调试**:通过阅读和分析...
源码分析: 1. **目录结构**:解压后的源码文件夹通常包含`bin`、`conf`、`lib`、`logs`、`webapps`、`work`等目录。`bin`存放启动和停止服务器的脚本,`conf`存储配置文件,`lib`包含运行Tomcat所需的JAR文件,`...
- **Context**:这是Tomcat处理每个Web应用的核心,负责管理Servlet、监听器和过滤器。 - **Host**:管理多个虚拟主机,每个虚拟主机可以对应一个或多个Context。 - **Engine**:最高级别的容器,管理一个或多个...
5. **学习设计模式**:Tomcat源码中运用了多种设计模式,如工厂模式、单例模式、观察者模式等,学习源码有助于提升设计能力。 综上所述,对Tomcat 8.0.32版本的源码分析是一项深入理解其工作原理、优化性能和进行...
源码分析: 1. **目录结构**: - `bin`:包含启动和停止Tomcat的脚本,以及管理工具。 - `conf`:存放配置文件,如`server.xml`、`web.xml`等。 - `lib`:存储Tomcat运行所需的JAR文件和其他库。 - `logs`:...
开发者可以从中了解Servlet生命周期、过滤器、会话管理、请求和响应对象的使用等核心概念。中文版的文档使得中国开发者能更方便地理解和应用这些知识。 在“压缩包子文件的文件名称列表”中,"Servlet+API[China]....
源码工程中的`conf`目录包含了服务器的配置文件,如`server.xml`定义了服务器的整体结构,`web.xml`则规定了全局的Servlet和过滤器配置。`webapps`目录存储了待部署的应用程序,而`work`目录则存放运行时生成的类...
7. **Eclipse集成**:在Eclipse中导入Tomcat源码,可以方便地进行调试、代码分析和自定义修改。这需要配置Tomcat插件,设置源代码路径,以及正确配置项目的构建路径。 8. **部署与调试**:在Eclipse中如何部署Web...