JAVA基础14-JavaWeb(十九)servlet的三大作用域

本文详细解析了Servlet中的三大作用域对象:request、session和application的功能与使用方法,介绍了如何在不同请求间共享数据,并探讨了servletContext接口及其常用方法,最后提到了servlet的局限性及与JSP的配合使用。

(1)servlet的三大作用域对象
1、request:每次请求都是一个新的request对象,如果在web组建之间需要共享同一个请求中的数据只能使用请求转发
2、session:每次请求都是一个新的session对象,如果一次会话中的多个请求之间需要共享数据,只能使用session
3、application:应用对象,tomcat启动到关闭,表示一个应用,在一个应用中有且只有一个application对象,作用于整个web应用,可以实现多次会话之间的数据共享
(2)如何共享数据
1、设置作用域的共享数据
setAttribute(String name , Object value)
2、获取作用域的共享数据
getAttribute(String name )
3、删除作用域的指定的共享数据
removeAttribute(String name )
(3)servletContext接口和常用方法
1、如何获取servletContext对象:
方式1:在servlet类中,super.getServletContext()
方式2:通过请求对象获取:request.getServletContext()该方法是从tomcat7开始的
方式3:通过session对象来获取:request.getSession().getServletContext()
2、常用方法:
根据一个web资源的根路径来获取它的觉得路径:String getRealPath(String path)
返回当前响应的上下文路径:String getContextPath()
3、全局初始化参数:
String getInitParameter(String name ):获取指定名称的全局初始化参数
Enumration getInitParameterNames():获取所有全局初始化参数的名字
(4)servlet的缺陷
servlet不擅长界面输出,jsp擅长界面输出。servlet主要做的三件事情:
1、接受请求参数,封装成对象。
2、调用业务方法处理请求。
3、控制界面跳转

### JavaWeb中的三大作用域及其用途 JavaWeb中通常提到的三大作用域为 `request`、`session` 和 `application`。以下是它们的详细说明及用途: #### 1. **Request作用域** - **定义**:`request` 作用域的生命周期与一次请求相关联,当客户端发起一个请求时创建,请求结束时销毁[^2]。 - **存储范围**:数据仅在当前请求内有效,适用于一次请求和响应的场景。 - **典型用途**: - 在控制器(如Servlet)中处理完业务逻辑后,将数据存入 `request` 域,然后转发到JSP页面进行展示。 - 示例代码: ```java request.setAttribute("key", "value"); RequestDispatcher dispatcher = request.getRequestDispatcher("/example.jsp"); dispatcher.forward(request, response); ``` - **特点**:适合短生命周期的数据共享,避免跨请求污染。 #### 2. **Session作用域** - **定义**:`session` 作用域的生命周期与用户的会话相关联,从用户首次访问开始,直到会话超时或显式销毁[^3]。 - **存储范围**:数据在整个会话期间有效,适用于需要在多次请求间保持状态的场景。 - **典型用途**: - 存储用户登录信息(如用户名、权限等),以便在不同页面间共享。 - 示例代码: ```java HttpSession session = request.getSession(); session.setAttribute("username", "JohnDoe"); ``` - **特点**:适合长生命周期的数据共享,但需注意内存占用和会话安全。 #### 3. **Application作用域** - **定义**:`application` 作用域的生命周期与整个Web应用相关联,从应用启动开始,到应用关闭结束[^4]。 - **存储范围**:数据在整个应用范围内有效,适用于所有用户共享的全局数据。 - **典型用途**: - 存储全局配置信息(如数据库连接池、系统参数等)。 - 示例代码: ```java ServletContext application = getServletContext(); application.setAttribute("globalConfig", configObject); ``` - **特点**:适合全局范围的数据共享,但需谨慎使用以避免过度占用内存。 #### 区别总结 | 作用域 | 生命周期 | 存储范围 | 典型用途 | |--------------|--------------------------------|------------------------------|-------------------------------------------| | Request | 一次请求 | 当前请求 | 数据传递给下一个页面 | | Session | 用户会话 | 整个会话 | 用户状态管理(如登录信息) | | Application | 整个Web应用 | 所有用户 | 全局共享数据(如配置信息) | --- ### 注意事项 虽然 `page` 作用域也常被提及,但由于其范围仅限于当前 JSP 页面,且在实际开发中较少使用,因此通常不将其纳入“三大作用域”讨论[^1]。 ```java // 示例:综合使用三大作用域 HttpSession session = request.getSession(); session.setAttribute("username", "Alice"); request.setAttribute("message", "Hello, Alice!"); ServletContext application = getServletContext(); application.setAttribute("siteName", "My Website"); ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值