【Java寒假打卡】JavaWeb-ServletContext
- 概述
- 域对象
- ServletContext的配置方式
- ServletContext的常用方法
- ServletContext共享数据的方法
概述
- ServletContext是应用上下文对象(应用域对象)。每一个应用中只有一个ServletContext对象
- 作用:可以配置和获得应用的全局初始化参数,可以实现Servlet之间的数据共享
- 生命周期:应用一加载则创建,应用被停止则销毁。
域对象
- 域对象指的是对象有作用域。也就是有作用范围。域对象可以实现数据的共享。不同作用范围的域对象,共享数据的能力也不一样。
- 在Servlet规范中,一共有四个域对象。ServletContext就是其中的一个。他也是web应用中最大的作用域,也叫application域,它可以实现整个应用之间的数据共享。
ServletContext的配置方式
注意:配置ServletContext不能再servlet标签下进行配置,必须在web-app标签下面进行配置 因为他是多个servlet资源的共享的配置,不是某一个独有的配置
<!--配置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的常用方法
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取ServletContext对象
ServletContext context = getServletContext();
// 根据key获取value
String globalDesc = context.getInitParameter("globalDesc");
System.out.println(globalDesc);
// 获取应用的虚拟目录
String contextPath = context.getContextPath();
System.out.println(contextPath);
// 根据虚拟目录获取绝对路径 getRealPath
String realPath = context.getRealPath("/");
System.out.println(realPath);
}
ServletContext共享数据的方法
不同servlet共享数据的方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 获取ServletContext对象
ServletContext context = getServletContext();
// 根据key获取value
String globalDesc = context.getInitParameter("globalDesc");
System.out.println(globalDesc);
// 获取应用的虚拟目录
String contextPath = context.getContextPath();
System.out.println(contextPath);
// 根据虚拟目录获取绝对路径 getRealPath
String realPath = context.getRealPath("/");
System.out.println(realPath);
// 设置共享数据 使得不同的servlet都可以访问到该共享数据
context.setAttribute("username","xxx");
// 根据key获取共享数据
Object uesrname = context.getAttribute("uesrname");
System.out.println(uesrname);
context.removeAttribute("username");// 移除共享数据 根据Key
}