当前位置:网站首页>servlet学习(七)ServletContext
servlet学习(七)ServletContext
2022-08-03 05:24:00 【世宇同学】
一、问题
session可以解决同一个用户之间不同请求的数据共享问题,那么不同用户之间的需要数据共享怎么办?
二、解决
使用ServletContext对象
三、原理
ServletContext对象是由服务器进行创建的,也就是说一个项目里面只有一个ServletContext对象,不同的用户获取到的ServletContext对象都是同一个,该ServletContext对象由所有用户所共有。
四、特点
服务器进行创建,用户共享,一个项目只有一个。
五、生命周期
服务器启动->服务器关闭
六、作用域
整个项目内
七、使用
1.获取ServletContext对象
//获取ServletContext对象的四种方式
ServletContext sc1=this.getServletContext();
ServletContext sc2=req.getSession().getServletContext();
ServletContext sc3=req.getServletContext();
ServletContext sc4=this.getServletConfig().getServletContext();
System.out.println(sc1==sc2);//true
System.out.println(sc1==sc3);//true
System.out.println(sc1==sc4);//true2.使用作用域进行数据共享流转
//数据存入
sc1.setAttribute("num", 1);
//取出数据
int num=(int) sc1.getAttribute("num");
System.out.println(num);//13.获取WebRoot/WebContent下资源的绝对路径
//获取WebContent下资源的绝对路径
String path=sc1.getRealPath("1.jsp");
System.out.println(path);//F:\Etomcat\webapps\018-ServletXuexi\1.jsp4.获取web.xml中的全局配置
作用:将静态数据和代码进行解耦
先配置web.xml中的数据,如下所示:
注意:一个 <context-param> </context-param>之间只能存放一个键值对,多组声明多个存储。
<context-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</context-param>
<context-param>
<param-name>type</param-name>
<param-value>text/html</param-value>
</context-param>//获取web.xml中的全局配置
String type=sc1.getInitParameter("type");
System.out.println(type);//text/html
String charset=sc1.getInitParameter("charset");
System.out.println(charset);//utf-8或者
Enumeration enumeration=sc1.getInitParameterNames();
while(enumeration.hasMoreElements()) {
String name=(String) enumeration.nextElement();
String value=sc1.getInitParameter(name);
System.out.println(name+" "+value);
}
//输出
//charset utf-8
//type text/html5.获取webroot/webcontent下项目资源流对象
InputStream inputStream=sc1.getResourceAsStream("1.jsp");
System.out.println(inputStream);//[email protected]注意:此种方式只能获取项目根目录下的资源流对象,class的流对象需要使用类加载器来获取。
边栏推荐
- 自监督论文阅读笔记Efficient Self-supervised Vision Pretraining with Local Masked Reconstruction
- ASP.NET MVC:自定义 Route
- 增强光学系统设计 | Zemax 全新 22.2 版本产品现已发布!
- 003_旭日X3派初探:利用无线串口通信控制舵机
- 动漫 吞噬星空
- ZEMAX | 探究 OpticStudio 偏振分析功能
- 自监督论文阅读笔记 Self-Supervised Visual Representation Learning with Semantic Grouping
- Kotlin 中的泛型介绍
- Oracle 密码策略详解
- 深度学习理论课程第八、九、十章总结
猜你喜欢
随机推荐
003_旭日X3派初探:利用无线串口通信控制舵机
ZEMAX | 如何创建简单的非序列系统
卷积神经网络入门
网络间通信
深度学习理论课程第八、九、十章总结
Oracle count(1)、count(*)、count(列) 区别详解
001_旭日X3派初探:开箱测试
Kettle Spoon 安装配置详解
自监督论文阅读笔记: MoCoV2使用动量对比学习改进基线
自监督论文阅读笔记 S3Net:Self-supervised Self-ensembling Network for Semi-supervised RGB-D Salient Object Det
Invalid signature file digest for Manifest main attributes解决方法
mysql 客户端SSL错误2026 (HY000)
Mysql 存储过程详解(procedure)
enum和enum class的区别
漫谈Map Reduce 参数优化
Qlik Sense 聚合函数及范围详解(Sum、Count、All、ToTaL、{1})
自监督论文阅读笔记DisCo: Remedy Self-supervised Learning on Lightweight Models with Distilled Contrastive
MATLAB自带的dwt2和wavedec2函数实现基于小波变换的自适应阈值图像边缘检测
东南亚跨境电商
神经网络基础








