ServletContext介绍和用法总结
ServletContext介绍和用法总结
参考文章:https://blog.csdn.net/qq_36371449/article/details/80314024
学习总结
一、ServletContext 介绍
1. 概念
ServletContext 也叫做 Servlet 上下文,WEB容器在启动时,它会为每个 WEB 应用程序都创建一个对应的 ServletContext 对象,它代表当前web应用。这个对象全局唯一且被项目类所有 Servlet 共享,所有叫全局应用程序共享对象
ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
一个WEB应用中的所有Servlet共享同一个 ServletContext 对象,因此Servlet对象之间可以通过 ServletContext 对象来实现通讯。ServletContext对象通常也被称之为 context 域对象。
2. 作用
- 是一个域对象
- 可以读取全局配置参数
- 可以搜索当前工程目录下面的资源文件
- 可以获取当前工程名字
3. 获取
3.1 在实现类中获取
- 通过 GenericServlet 提供的 getServletContext() 获取
ServletContext servletContext = getServletContext();
- 通过 ServletConfig 提供的 getServletContext() 获取
ServletContext servletContext = getServletConfig().getServletContext();
- 通过HttpServletRequest获取
ServletContext servletContext1 = req.getServletContext();
- 通过HttpSession获取
ServletContext servletContext = req.getSession().getServletContext();
3.2 在 Spring 容器中获取
- 在 WEB 环境下,启动 tomcat 会创建 ServletContext 对象,然后 Spring 会把这个对象注入到 Spring 容器中,我们只需要通过注解去取出来就行
@Autowired
private ServletContext servletContext;
二、ServletContext 使用
1. 作为作用域对象
1.1 作用域介绍
域对象是服务器在内存上创建的存储空间,用于在不同动态资源(servlet)之间传递与共享数据。
1.2 作用域方法
- 哪个作用域对象调用方法就操作对应的作用域数据
| 作用域相关方法 | 作用 |
|---|---|
| Object setAttribute(“键”) | 从中得到一个值 |
| void setAttribute(“键”, Object数据) | 向作用域中存储键值对数据 |
| void removeAttribute(“键”) | 删除作用域种的键值对数据 |
1.3 域对象的代码实现
- 实现多个 Servlet 通过 ServletContext 对象实现数据共享,在InitServlet的Service方法中利用ServletContext对象存入需要共享的数据
/*获取ServletContext对象*/
ServletContext context = this.getServletContext();
//存入共享的数据
context.setAttribute("name", "haha");
// 在其它的Servlet中利用ServletContext对象获取共享的数据
/*获取ServletContext对象*/
ServletContext context = this.getServletContext();
//获取共享的数据
String name = context.getAttribute("name");
System.out.println("共享的内容值是:"+name);
2. 获取 WEB 应用的初始化参数。
2.1 方法
- 根据指定的参数名获取参数值
getServletContext().getInitParameter(name);
- 获取所有参数名称列表
getServletContext().getInitParameterNames();
2.2 代码实现
- web.xml 文件中的全局参数
<!-- 全局配置参数,因为不属于任何一个servlet,但是所有的servlet都可以通过servletContext读取这个数据 -->
<context-param>
<param-name>param1</param-name>
<param-value>value1</param-value>
</context-param>
<context-param>
<param-name>param2</param-name>
<param-value>value2</param-value>
</context-param>
- 读取 web.xml 文件中的全局参数
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//使用servletContext读取全局配置参数数据
//核心方法
/*getServletContext().getInitParameter(name);//根据指定的参数名获取参数值
getServletContext().getInitParameterNames();//获取所有参数名称列表*/
//打印所有参数
//1.先获取所有全局配置参数名称
Enumeration<String> enumeration = getServletContext().getInitParameterNames();
//2.遍历迭代器
while(enumeration.hasMoreElements()){
//获取每个元素的参数名字
String parameName = enumeration.nextElement();
//根据参数名字获取参数值
String parameValue = getServletContext().getInitParameter(parameName);
//打印
System.out.println(parameName+"="+parameValue);
}
}
3. 获取当前项目下的资源文件
3.1 方法
- 根据相对路径获取服务器上资源的绝对路径
getServletContext().getRealPath(path),
- 根据相对路径获取服务器上资源的输入字节流
getServletContext().getResourceAsStream(path)
4. 获取当前项目的名字
- 获取当前项目的名字
getServletContext().getContextPath();
总结
以上就是对ServletContext介绍和用法的总结了,代码仅供参考,欢迎讨论交流。
ServletContext介绍和用法总结的更多相关文章
- 【转】ServletContext介绍及用法
1.1. 介绍 ServletContext官方叫servlet上下文.服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象.这个对象全局唯一,而且工程内部的所有servl ...
- java中的上下问解释以及ServletContext介绍使用
摘抄的:所谓上下文,它是用来存储系统的一些初始化信息,例如在jboss中通过配置文件指定了数据源,那么在jboss启动的时候就把这个文件的相关信息上下文中,于是在我们使用这个数据源的时候,就需要先获得 ...
- oc-12-NSString 类简单介绍及用法
// 11-[掌握]NSString 类简单介绍及用法 #import <Foundation/Foundation.h> int main(int argc, const char * ...
- WorkFlow介绍及用法
WorkFlow介绍及用法 说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配 ...
- Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法
Spring BeanFactory与FactoryBean的区别及其各自的详细介绍于用法 1. BeanFactory BeanFactory,以Factory结尾,表示它是一个工厂类(接口),用于 ...
- vue第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法)
第四单元(初识vue-在页面中直接引入vue框架-学习使用vue语法-vue的指令-介绍data用法-methods用法) #课程目标 了解 vue 框架的特点 掌握创建 vue 实例 掌握 data ...
- 08_android入门_android-async-http开源项目介绍及用法
android-async-http开源项目可以是我们轻松的获取网络数据或者向server发送数据.使用起来很easy,关于android-async-http开源项目的介绍内容来自于官方:http: ...
- JMS学习篇《一》ActiveMQ消息中间件的简单介绍与用法-概念篇
原创说明:本篇博文为本人原创作品,转载请注明出处 1.何为消息中间件 消息中间件是一种在分布式应用中互相交换信息的一种技术,常见的成熟消息中间件有:RabbitMQ.SonicMQ,activeMQ. ...
- Cookie、Session登陆验证相关介绍和用法
一.Cookie和Session 首先.HTTP协议是无状态的:所谓的无状态是指每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应直接影响,也不会直接 ...
随机推荐
- 初识——HTTP3
目录 初识--HTTP3 HTTP HTTP1.0和HTTP1.1的主要区别 HTTP2 HTTP3 相关链接 初识--HTTP3 想了解HTTP3??那我们就得先知道为啥会出现HTTP3,因此我们需 ...
- linux定时任务 - at定时任务
at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行作业.atd守护进程会检查系统上的一个特殊目录来获取at命令的提交的作业,默认情况下,atd守护进程每60秒检查一 ...
- itertools.chain()and itertools.product()操作+pandas.DataFrame.transform
- JavaWeb——Tomcat使用
官方下载地址:https://tomcat.apache.org/download-90.cgi 选择安装包: 64-bit Windows zip (pgp, sha512) 注:tar.gz后缀的 ...
- new和@Autowired的区别
controller层: @RequestMapping("/payment") @RestController public class WxPayController { pu ...
- VMware安装win7后,安装VMware Tools时报错安装程序无法继续。本程序需要您将此虚拟机上安装的操作系统更新到SP1
具体报错: 倘若你用的是这样的镜像:cn_windows_7_enterprise_x64_dvd_x15-70741.iso 换镜像源.换镜像源.换镜像源! 换成带sp1的iso镜像:cn_wind ...
- 容器化 | 在 K8s 上部署 RadonDB MySQL Operator 和集群
作者:程润科 数据库研发工程师 编辑:张莉梅 高级文档工程师 视频:钱芬 高级测试工程师 本文将演示在 Kubernetes 上部署 RadonDB MySQL Kubernetes 2.X(Oper ...
- CF1486X Codeforces Round #703
C2 Guessing the Greatest (二分+构造) 题目大意:交互题,每次可以询问一个子区间次大值的位置,最多询问20次,问全局最大值的位置.n=1e5 40次的情况大力二分,20次需要 ...
- Linux开发板(树莓派)和服务器进行双向通信(socket)
前言 物联网是目前嵌入开发必备的属性之一,我们常常需要把自己开发板和云端进行交互,本篇博文就记录一下. 使用Socket来实现Linux开发板和服务器进行双向通信,Python中是默认集成了s ...
- 什么是B+树??
上一篇中,我们了解了B树,辣么..B+树又是什么呢?? 一:定义:B+树是基于B树的,是B树的变形,也是一种多路搜索树.查询性能更加出色. 1.每个父节点元素出现在子节点中,是子节点的最大或最小元素. ...