ServletContext介绍
-
ServletContext 是应用上下文对象。每一个应用中只有一个 ServletContext 对象。
-
作用:可以获得应用的全局初始化参数和达到 Servlet 之间的数据共享。
-
生命周期:应用一加载则创建,应用被停止则销毁。
- 出生——活着——死亡
- 出生: 应用一加载,该对象就被创建出来了。一个应用只有一个实例对象。(Servlet和ServletContext都是单例的)
- 活着:只要应用一直提供服务,该对象就一直存在。
- 死亡:应用被卸载(或者服务器挂了),该对象消亡。
域对象概念
- 域对象指的是对象有作用域。也就是有作用范围
- 域对象可以实现数据的共享
- 不同作用范围的域对象,共享数据的能力也不一样
- 在 Servlet 规范中,一共有 4 个域对象
- ServletContext 就是其中的一个
- 它也是 web 应用中最大的作用域,也叫 application 域
- 它可以实现整个应用之间的数据共享
ServletContext的配置方式
-
ServletContext 并不属于某个 Servlet 的配置,而是针对于整个应用的配置,也叫全局的初始化参数
-
在
<web-app>
标签中,通过<context-param>
标签来配置。有两个子标签 -
<param-name>
:代表全局初始化参数的 key -
<param-value>
:代表全局初始化参数的 value -
代码展示:
package com.lichee.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class ServletContextDemo extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } }
-
配置Servlet,并且配置ServletContext
<!--配置Servlet--> <servlet> <servlet-name>servletContextDemo</servlet-name> <servlet-class>com.lichee.servlet.ServletContextDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>servletContextDemo</servlet-name> <url-pattern>/servletContextDemo</url-pattern> </servlet-mapping> <!--配置ServletContext--> <context-param> <param-name>globalEncoding</param-name> <param-value>UTF-8</param-value> </context-param> <context-param> <param-name>globalDesc</param-name> <param-value>This is ServletContext</param-value> </context-param>
- 注意ServletContext的配置是在wep-app节点下,与servlet配置同级别
ServletContext的常用方法
-
常用方法
返回值 方法名 说明 String getInitParameter(String name) 根据名称获取全局配置的参数 String getContextPath() 获取当前应用的虚拟访问目录 String getRealPath(string path) 根据虚拟目录获取应用部署的磁盘绝对路径 void setAttribute(String name,Object value) 向应用域对象中存储数据 Object getAttribute(String name) 通过名称获取应用域对象中的数据 void removeAttribute(String name) 通过名称移除应用域对象中的数据