【转】ServletContext介绍及用法
1.1. 介绍
ServletContext官方叫servlet上下文。服务器会为每一个工程创建一个对象,这个对象就是ServletContext对象。这个对象全局唯一,而且工程内部的所有servlet都共享这个对象。所以叫全局应用程序共享对象。

1.2. 作用
1. 是一个域对象
2. 可以读取全局配置参数
3. 可以搜索当前工程目录下面的资源文件
4. 可以获取当前工程名字(了解)
1.2.1. servletContext是一个域对象
1.2.1.1. 域对象介绍
域对象是服务器在内存上创建的存储空间,用于在不同动态资源(servlet)之间传递与共享数据。
1.2.1.2. 域对象方法
凡是域对象都有如下3个方法:
|
setAttribute(name,value);name是String类型,value是Object类型; |
往域对象里面添加数据,添加时以key-value形式添加 |
|
getAttribute(name); |
根据指定的key读取域对象里面的数据 |
|
removeAttribute(name); |
根据指定的key从域对象里面删除数据 |
1.2.1.3. 域对象功能代码
域对象存储数据AddDataServlet代码
|
/** * doGet */ publicvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //往serlvetContext里面存数据 //1.获取ServletContext对象 //getServletContext() //2.往对象里面设置数据 getServletContext().setAttribute("username", "admin"); response.getOutputStream().write("用户名写入到servletContext成功".getBytes()); } |
获取域对象数据GetDataServlet代码
|
/** * doGet */ publicvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取ServletContext里面的用户名数据 Object valueObject = getServletContext().getAttribute("username"); if(valueObject!=null){ response.getOutputStream().write(("从servletContext读取到的用户名数据:"+valueObject.toString()).getBytes()); } } |
servletContext存储数据特点,
全局共享,里面的数据所有动态资源都可以写入和获取
服务器启动的时候创建,服务器关闭的时候销毁,因为这是全局应用程序对象,全局共享对象。
1.2.2. 可以读取全局配置参数
1.2.2.1. servletContext读取全局参数核心方法
getServletContext().getInitParameter(name);//根据指定的参数名获取参数值
getServletContext().getInitParameterNames();//获取所有参数名称列表
1.2.2.2. 实现步骤:
1. 在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> |
2. 在动态资源servlet里面使用servletcontext读取全局参数代码
|
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); } } |
1.2.3. 可以搜索当前工程目录下面的资源文件
1.2.3.1. 核心方法
getServletContext().getRealPath(path),根据相对路径获取服务器上资源的绝对路径
getServletContext().getResourceAsStream(path),根据相对路径获取服务器上资源的输入字节流
1.2.4. 可以获取当前工程名字
1.2.4.1. 核心方法
getServletContext().getContextPath();
作用:获取当前工程名字
1.2.4.2. 代码
|
publicvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取工程名字,getServletContext().getContextPath() response.getOutputStream().write(("工程名字:"+getServletContext().getContextPath()).getBytes()); } |
转载:https://blog.csdn.net/qq_36371449/article/details/80314024。
【转】ServletContext介绍及用法的更多相关文章
- ServletContext介绍和用法总结
ServletContext介绍和用法总结 学习总结 一.ServletContext 介绍 1. 概念 2. 作用 3. 获取 3.1 在实现类中获取 3.2 在 Spring 容器中获取 二.Se ...
- 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协议是无状态的:所谓的无状态是指每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应直接影响,也不会直接 ...
随机推荐
- JUnit & JMockit单元测试
JUnit&JMockit单元测试总结 1.JUnit简介 Java单元测试框架业内应用较多的是JUnit,它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的 ...
- CF750G New Year and Binary Tree Paths(DP)
神仙题.为啥我第一眼看上去以为是个普及题 路径有两种,第一种是从 LCA 一边下去的,第二种是从 LCA 两边都下去了的. 先考虑第一种. 先枚举路径长度 \(h\). 当 LCA 编号是 \(x\) ...
- Ubuntu Idea 快捷键 Ctrl+Alt+S 无法使用解决
Idea 里习惯了用 Ctrl+Alt+S 打开设置界面,在 Ubuntu 下会因为快捷键冲突无法使用 系统快捷键 打开系统设置中的快捷键设置,按 Backspace 键禁用 Fcitx 如果你的输入 ...
- Java连载39-构造方法详解
一. 1.多行注释:CTRL + shift + / 2.当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器. public class D39 ...
- IT兄弟连 Java语法教程 Java语法基础 经典面试题
1.Java语言中有几种基本类型?分别是什么?请详细说明每种类型的范围以及所占的空间大小? Java语言中有8中基本类型,分别是代表整形的byte.short.int和long,代表浮点型的float ...
- Vue自定义指令使用方法详解 和 使用场景
Vue自定义指令的使用,具体内容如下 1.自定义指令的语法 Vue自定义指令语法如下: Vue.directive(id, definition) 传入的两个参数,id是指指令ID,definitio ...
- java中的常用类(二)
java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...
- Web前端——表单提交和Js添加选项
表单 表单提交 表单提交之后会将表单的数据以get或post方式,传送到action要打开的页面 方式1: 使用提交按钮 <form action="" method=&qu ...
- .net core入门-项目启动时报错:HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure
在打开Core的项目首页时,页面有时候会出现:HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure的错误,但是这里面看不出任何错误详情,这个时候 ...
- dictionary vs Hashtables
DictionaryDictionary is generic type Dictionary<TKey,TValue>Dictionary class is a strong type ...