8. Context容器
Context容器代表一个WebApp。
8.1Context的配置文件
Context在解析server.xml文件的时候就会被创建,然后在web应用的/META-INF/context.xml文件中进行属性的添加。
而Tomcat源码自带的conf/下的context.xml是配置所有context容器的属性。
8.2 Wrapper——包装器
Wrapper是最小的容器,一个Wrapper对应一个Servlet。
8.3 Realm,AccessLog
在Engine和Host中讲过。
8.4 Manager——会话管理器
用于管理Web容器会话的。
8.5 DirContext 目录上下文
JNDI:(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,
DireContext能让Tomcat更快的访问到想要的文件。
8.6 安全认证
查看后续笔记(TODO)
8.7 JarScanner——Jar扫描器
用来扫描Jar包的工具
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FDjNaHpN-1619271987286)(image-20210422163057119.png)]
8.8 过滤器
在Web应用的web.xml文件中配置过滤器只会在此Web应用中有效,在tomcat的conf/下的web.xml中配是全部的web应用都有这个过滤器。
过滤器是在Context中存在的,但是是Wrapper去执行的
1.FilterDef类
这个类是对应xml文件中的属性的。
<!-- Filter,过滤器 -->
<filter>
<!-- filter名,随便起 -->
<filter-name>AdminFilter</filter-name>
<!-- 实现类所在目录 -->
<filter-class>cn.kihyou.b2c.filter.AdminFilter</filter-class>
<!-- 初始化参数 -->
<!-- 设置字符集,charset:UTF-8 -->
<init-param>
<!-- 参数名 -->
<param-name>charset</param-name>
<!-- 参数值 -->
<param-value>UTF-8</param-value>
</init-param>
<!-- 设置内容类型及其字符集,contentType:text/html;charset=UTF-8 -->
<init-param>
<param-name>contentType</param-name>
<param-value>text/html;charset=UTF-8</param-value>
</init-param>
</filter>
<!-- filter的映射 -->
<filter-mapping>
<!-- 对应的filter名 -->
<filter-name>AdminFilter</filter-name>
<!-- 要进行拦截过滤的目录 -->
<url-pattern>/web/admin/*</url-pattern>
</filter-mapping>
<session-config>
<!-- 超时时间,单位:分钟 -->
<session-timeout>30</session-timeout>
</session-config>
2.ContextFilterMaps
这个类是StandardContext的内部类。
用于保存过滤器映射关系,里面有个private FilterMap[] array ,这个是用来存储映射关系的。
3.ApplicationFilterConfig
用于管理web应用程序首次启动时实例化的过滤器实例。
以上三个是Context容器的过滤器模块所包含的。
8.9 Mapper——映射器
具体内容请看后续笔记
8.10 webappLoader ——Web应用载入器
利用各自独立的Web应用载入器可以使不同的Web应用之间做到相互隔离。
8.11 ApplicationContext
它实现了ServletContext接口
构建了一个Context容器环境。 可以通过Servlet访问Context的各种资源,如获取上下文getServlet Context()
实际上所用的是 ApplicationContextFacade外观类。防止重要的运行属性和内部方法暴露给Web开发人员。被修改后可能会出现运行bug。
8.12 InstanceManager实例管理器
8.13 ServletContainerInitializer——初始化器
等等。。。
说个最重要的,Context监听器
8.14 监听器
Context有四个监听器
ContextConfig,
TldConfig, 负责对TLD标签配置文件的相关处理
NamingContextListener,负责管理命名资源
MemoryLeakTrackingListener.防止内存泄露的。