温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java servlet生命周期啥

发布时间:2026-11-03 15:04:36 来源:亿速云 阅读:95 作者:小樊 栏目:编程语言

Java Servlet 的生命周期主要由 Servlet 容器(如 Tomcat) 管理,分为几个明确的阶段。简单说就是:加载 → 初始化 → 处理请求 → 销毁。


一、Servlet 生命周期核心阶段

1️⃣ 加载和实例化(Load & Instantiate)

  • 当容器启动,或第一次有请求访问该 Servlet 时
  • 容器会:
    • 加载 Servlet 类
    • 创建 Servlet 实例(只创建一次)

Servlet 是单例多线程的


2️⃣ 初始化:init()

public void init(ServletConfig config) throws ServletException
  • 在 Servlet 实例创建后立即调用一次
  • 用于:
    • 读取配置参数
    • 初始化资源(数据库连接等)

✅ 只执行一次


3️⃣ 处理请求:service()

protected void service(HttpServletRequest req, HttpServletResponse resp)
  • 每次客户端请求都会调用
  • 根据请求方式分发到:
    • doGet()
    • doPost()
    • doPut()
    • doDelete()

⚠️ 多线程并发执行,注意线程安全


4️⃣ 销毁:destroy()

public void destroy()
  • 容器关闭或重新部署时调用
  • 用于释放资源(关闭连接、线程等)

✅ 只执行一次


二、生命周期流程图(文字版)

容器启动
   ↓
(首次请求)
加载 Servlet 类
   ↓
创建 Servlet 实例
   ↓
init()
   ↓
service()  ← 多次
   ↓
destroy()

三、重要特点总结

✅ Servlet 只实例化一次
✅ init() 和 destroy() 只执行一次
✅ service() 每次请求都会执行
✅ 默认是懒加载(第一次访问才创建)


四、常见面试题

Q:Servlet 是线程安全的吗?
❌ 不是,多个请求共享同一个 Servlet 实例

Q:如何让 Servlet 容器启动时初始化?

@WebServlet(loadOnStartup = 1)

如果你愿意,我也可以:

  • 用 代码示例 演示
  • 对比 Servlet vs Spring MVC
  • 讲 Servlet 3.0 注解方式

你想看哪个?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手