Servlet 是 JavaEE 技术中的一大核心组件,它运行在服务器端,用于处理客户端的请求并生成响应。如果你想深入了解它的体系结构,下面会用通俗的语言带你一步步搞懂。
1. Servlet API:开发者和容器沟通的桥梁
Servlet API 是开发 Servlet 的核心工具包,它定义了开发 Servlet 需要用到的一系列接口和类。通过这些 API,开发者可以让 Servlet 容器(后面会讲到)接收请求、生成响应,还能轻松管理会话数据(比如登录状态等)。
简单来说:Servlet API 就是让开发者和服务器 “对话” 的桥梁,没它干不了活。
2. Servlet 容器:Servlet 的运行环境
Servlet 容器是执行 Servlet 的环境,相当于 Servlet 的宿主。它的主要职责包括:
- 接收并处理请求:它会调用 Servlet API 的方法,把来自客户端的请求转交给合适的 Servlet。
- 管理 Servlet 生命周期:从加载到销毁,容器全程负责。
举个例子:Tomcat 和 Jetty 就是两种常见的 Servlet 容器。
3. Servlet 配置文件:Servlet 和 URL 的桥梁
在传统的开发中,我们需要通过一个叫 web.xml
的文件来配置 Servlet,告诉容器:
- 哪个 URL 跟哪个 Servlet 对应;
- 初始化 Servlet 的一些参数。
不过好消息是:从 Servlet 3.0 开始,可以直接用注解(@WebServlet)来替代 web.xml
的配置,简单又方便。
4. Servlet 的生命周期:从出生到销毁的一生
4.1 装载(Loading)
当 Servlet 容器启动时,它会去查找 web.xml
或注解配置,根据需要创建并加载 Servlet 类。
简单来说:这是 Servlet 的“出生”阶段。
4.2 初始化(Initialization)
接下来,容器会调用 Servlet 的 init()
方法。这个阶段,Servlet 通常会做一些准备工作,比如:
- 初始化数据库连接;
- 读取配置文件;
- 申请资源。
简单来说:这是 Servlet 的“上岗前培训”阶段。
4.3 处理请求(Handling Requests)
容器接收到客户端的请求后,会调用 Servlet 的 service()
方法来处理这个请求。开发者可以根据请求类型(GET、POST 等)来写对应的逻辑。
简单来说:这是 Servlet 的“正式工作”阶段。
4.4 销毁(Destroying)
当容器关闭或卸载 Web 应用时,会调用 Servlet 的 destroy()
方法来销毁它。这里 Servlet 应该释放掉用过的资源,比如关闭数据库连接等。
简单来说:这是 Servlet 的“退休”阶段。
5. Servlet 的接口和类:开发者的工具箱
Servlet API 提供了一些接口和类,开发者可以基于这些接口和类开发自己的 Servlet。下面是几种常用的工具:
Servlet 和 HttpServlet
- Servlet:所有 Servlet 的基础接口。
- HttpServlet:一个专门用于处理 HTTP 请求的类,绝大多数场景都会用到它。
简单来说:HttpServlet
是处理 Web 请求的好帮手。
ServletContext 和 ServletConfig
- ServletContext:表示整个 Web 应用的上下文环境。比如获取项目全局的参数、共享数据等,可以用它搞定。
- ServletConfig:表示某个特定 Servlet 的配置信息,比如初始化参数。
简单来说:前者是“全局配置管理员”,后者是“局部配置专员”。
HttpServletRequest 和 HttpServletResponse
- HttpServletRequest:代表 HTTP 请求。通过它可以获取请求参数、头部信息等。
- HttpServletResponse:代表 HTTP 响应。通过它可以向客户端返回数据。
简单来说:一个负责“收信”,一个负责“回信”。
RequestDispatcher
- 用于把请求转发给其他 Servlet 或 JSP 页面。
简单来说:这是“快递员”,负责内部的请求转交。
希望这份解读让 Servlet 的体系结构变得清晰易懂!记住,理解这些关键部分,面试或开发时你会更得心应手。
最后说一句(求关注,求赞,别白嫖我)
最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。
这是大佬写的 7701页的BAT大佬写的刷题笔记,让我offer拿到手软
本文,已收录于,我的技术网站 cxykk.com:程序员编程资料站,有大厂完整面经,工作技术,架构师成长之路,等经验分享
求一键三连:点赞、分享、收藏
点赞对我真的非常重要!在线求赞,加个关注我会非常感激!