Servlet 三大域对象

本文详细解析了Servlet中的三大域对象:Request、Session、ServletContext,包括它们的使用场景、API和生命周期。Request适用于一次请求的数据共享,Session用于保存会话期间的数据,而ServletContext则在整个Web应用中提供数据共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Servlet 三大域对象

  • 三大域对象包括 Request、Session、ServletContext,它们有相似的 API 和不同的生命周期。

1. 使用场景

  • 考虑到服务器的内存问题,能用小的不用大的:Request < Session < ServletContext
  • 常见的使用场景:
    • Request:一次查询的结果。例如,Servlet 转发 JSP。
    • Session:存放当前会话的私有数据。例如,用户登录状态,验证码,购物车。
    • ServletContext:若需要所有的 Servlet 都能访问到,才使用这个域对象。

2. API

  1. 设置数据:
    void setAttribute(String name, Object o)
  2. 获取数据:
    Object getAttribute(String name)
  3. 删除数据:
    void removeAttribute(String name)

3. 生命周期

a. HttpServletRequest 域对象

  1. 何时创建:
    用户发送请求时,创建。
  2. 何时销毁:
    服务器做出响应后,销毁。
  3. 作用范围:
    一次请求中,多次转发间(共享数据)。

b. HttpSession 域对象

  1. 何时创建:
    用户第一次调用 request.getSession() 方法时,创建【不准确的说法】;
    用户访问携带的 Jsessionid 与服务器不匹配时,创建【准确的说法】。
  2. 何时销毁:
    • 服务器非正常关闭;
    • 未活跃状态 30 分钟;
    • 自杀。
  3. 作用范围:
    一次会话中,多次请求间(共享数据)。

c. ServletContext 域对象

  1. 何时创建:
    服务器正常启动,项目加载时,创建。
  2. 何时销毁:
    服务器关闭或项目卸载时,销毁。
  3. 作用范围:
    整个 web 项目(共享数据)。

原文链接:https://qwert.blog.csdn.net/article/details/105643238

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值