编辑
2023-11-10
Tomcat源码学习
00
请注意,本文编写于 546 天前,最后修改于 546 天前,其中某些信息可能已经过时。

一、Servlet接口和Servlet容器

  1. Servlet接口:Servlet接口定义了五个方法,包括init、getServletConfig、service、getServletInfo和destroy [1]

    • init方法在Servlet容器加载Servlet类时调用,用于初始化一些资源。
    • getServletConfig方法用于获取Servlet的配置信息。
    • service方法是业务类实现处理逻辑的地方,接收ServletRequest和ServletResponse对象作为参数。
    • getServletInfo方法返回Servlet的信息。
    • destroy方法在Servlet容器卸载Servlet类时调用,用于释放资源。
  2. Servlet容器:Servlet容器负责实例化和调用Servlet,实现了Servlet规范的要求。

    • Servlet容器接收Http服务器的请求,并根据请求的URL和Servlet的映射关系找到对应的Servlet。
    • 如果Servlet还没有被加载,Servlet容器会使用反射机制创建Servlet实例,并调用其init方法进行初始化。
    • Servlet容器调用Servlet的service方法处理请求,并将ServletResponse对象返回给Http服务器,最终发送给客户端。

二、Web应用和ServletContext

  1. Web应用:Servlet一般以Web应用程序的方式部署。Web应用程序有一定的目录结构,包括WEB-INF目录下的web.xml配置文件、lib目录下的JAR包、classes目录下的应用类文件等 [1]

  2. ServletContext:Servlet容器为每个Web应用创建唯一的ServletContext对象,用于对应一个Web应用的全局环境。

    • ServletContext可以看作是一个全局对象,用于共享数据和资源,包括Web应用的初始化参数和目录下的文件资源。
    • ServletContext持有所有Servlet实例,可以实现Servlet请求的转发。

三、扩展机制:Filter和Listener

  1. Filter:过滤器是Servlet规范中的一部分,允许对请求和响应进行统一的定制化处理。

    • 过滤器可以根据请求的频率限制访问,根据地区修改响应内容等。
    • 过滤器通过FilterChain链接起来,当请求进来时,依次调用Filter的doFilter方法。
  2. Listener:监听器用于监听Servlet容器内部发生的事件,如Web应用的启动和停止、用户请求到达等。

    • Servlet容器提供了默认的监听器,当事件发生时,容器会调用监听器的方法。
    • 自定义监听器需要在web.xml中配置,可以用来监听ServletContext的启动事件等。

Learn more:

  1. tomcat系列之二:Servlet规范 - inspire0x001 - 博客园
  2. Tomcat对Servlet规范的Filter及Listener实现-腾讯云开发者社区-腾讯云
  3. Servlet规范 - 廖雪峰的官方网站

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!