ServletContext 对象
作用:
解决了 不同用户 的数据共享问题
作用域:整个项目内
生命周期:服务器启动到服务器关闭
特点:
服务器进行创建、用户共享、一个项目只有一个
原理:
ServletContext 对象由服务器进行创建,一个项目只有一个ServletContext 对象。不管在项目的任意位置进行获取得到的都是同一个对象,那么不同用户发起的请求获取到的也就是同一个对象了,该对象由用户共同拥有。
使用:
获取 ServletContext 对象
/*以下三种方式获取的都是同一个ServletContext 对象*/
ServletContext context1 = this.getServletContext(); //第一种方式(常用)
ServletContext context2 = this.getServletConfig().getServletContext(); //第二种方式
ServletContext context3 = req.getSession().getServletContext(); //第三种方式
使用作用域进行共享数据流转
context.setAttribute("message", "我是一个ServletContext对象"); //数据存储
//另一个Servlet中写
context.getAttribute("message"); //数据获取
- 注意:
不同的用户可以给ServletContext对象进行数据的存取
获取的数据不存在返回null
获取 web.xml 中的全局配置的全局数据的值
<!-- 作用:将静态数据和代码进行解耦 -->
<context-param>
<param-name>键名</param-name>
<param-value>小李</param-value>
</context-param>
String str = context.getInitParameter("键名");
String str = context.getInitParameterNames(); //返回键名的枚举
获取 webContext 下项目资源流对象
InputStream is = context.getResourceAsStream("/doc/a.txt");
获取 webContext下资源绝对路径
String path = context.getRealPath("/doc/a.txt"); //动态获取该文件的绝对路径
案例:网页浏览器次数统计
在成功登录时,创建计数器并自增,然后存储到ServletContext对象中。
在主界面中取出计数器的数据并显示。
ServletConfig 对象
作用:
ServletConfig 对象是 Servlet 的专属配置对象,每个 Servlet 都单独拥有一个 ServletConfig 对象,用来获取 web.xml 中的配置信息。
使用:
获取 ServletConfig 对象
<servlet>
<param-name>config</param-name>
<param-value>urf-8</param-value>
</servlet>
ServletConfig config = this.getServletConfig(); //获取 ServletConfig 对象
String code = config.getInitParameter("config"); //获取 web.xml 中 servlet 的配置信息