请注意,本文编写于 546 天前,最后修改于 546 天前,其中某些信息可能已经过时。
一、Servlet接口和Servlet容器
-
Servlet接口:Servlet接口定义了五个方法,包括init、getServletConfig、service、getServletInfo和destroy [1]。
- init方法在Servlet容器加载Servlet类时调用,用于初始化一些资源。
- getServletConfig方法用于获取Servlet的配置信息。
- service方法是业务类实现处理逻辑的地方,接收ServletRequest和ServletResponse对象作为参数。
- getServletInfo方法返回Servlet的信息。
- destroy方法在Servlet容器卸载Servlet类时调用,用于释放资源。
-
Servlet容器:Servlet容器负责实例化和调用Servlet,实现了Servlet规范的要求。
- Servlet容器接收Http服务器的请求,并根据请求的URL和Servlet的映射关系找到对应的Servlet。
- 如果Servlet还没有被加载,Servlet容器会使用反射机制创建Servlet实例,并调用其init方法进行初始化。
- Servlet容器调用Servlet的service方法处理请求,并将ServletResponse对象返回给Http服务器,最终发送给客户端。
二、Web应用和ServletContext
-
Web应用:Servlet一般以Web应用程序的方式部署。Web应用程序有一定的目录结构,包括WEB-INF目录下的web.xml配置文件、lib目录下的JAR包、classes目录下的应用类文件等 [1]。
-
ServletContext:Servlet容器为每个Web应用创建唯一的ServletContext对象,用于对应一个Web应用的全局环境。
- ServletContext可以看作是一个全局对象,用于共享数据和资源,包括Web应用的初始化参数和目录下的文件资源。
- ServletContext持有所有Servlet实例,可以实现Servlet请求的转发。
三、扩展机制:Filter和Listener
-
Filter:过滤器是Servlet规范中的一部分,允许对请求和响应进行统一的定制化处理。
- 过滤器可以根据请求的频率限制访问,根据地区修改响应内容等。
- 过滤器通过FilterChain链接起来,当请求进来时,依次调用Filter的doFilter方法。
-
Listener:监听器用于监听Servlet容器内部发生的事件,如Web应用的启动和停止、用户请求到达等。
- Servlet容器提供了默认的监听器,当事件发生时,容器会调用监听器的方法。
- 自定义监听器需要在web.xml中配置,可以用来监听ServletContext的启动事件等。
Learn more:
- tomcat系列之二:Servlet规范 - inspire0x001 - 博客园
- Tomcat对Servlet规范的Filter及Listener实现-腾讯云开发者社区-腾讯云
- Servlet规范 - 廖雪峰的官方网站
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA
许可协议。转载请注明出处!