Day06 ServletContext
ServletContext的介绍与用法
1.什么是ServletContext
1.1 SevrvletContext:Servlet上下文
服务器会为每一个Web工程创建一个ServletContext对象,ServletContext对象全局唯一,且工程内部的所有Servlet共享这个对象,所以叫全局应用程序共享对象

1.2 ServletContext对象如何得到
//最常用的获取域对象的方法
this.getServletContext();
//不常用
this.getServletConfig().getServletContext();
2.作用
2.1.是一个域对象
域对象介绍:
域对象是服务器在内存上创建的存储空间,用于在不同动态资源(servlet)之间传递与共享数据。
2.2.可以读取全局配置参数
ServletContext读取全局参数核心方法
Enumeration<String> getInitParameterNames();
getServletContext().getInitParameterNames();//获取所有参数名称列表,返回的是枚举类Enumeration的对象,泛型为String
String getInitParameter(String var1);
getServletContext().getInitParameter(name);//根据指定的参数名获取参数值,返回的类型是String
2.2.1 实现步骤
在web.xml中配置全局参数
<!--在Servlet里参数配置方法只针对一个特定的Servlet有效,-->
<servlet>
<servlet-name>Receive</servlet-name>
<servlet-class>com.zixin.servlet.ReceiveServlet</servlet-class>
<init-param>
<param-name>user3</param-name>
<param-value>xiaoliu</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Receive</servlet-name>
<url-pattern>/receive</url-pattern>
</servlet-mapping>
<!-- 全局配置参数,因为不属于任何一个servlet,但是所有的servlet都可以通过servletContext读取这个数据 -->
<context-param>
<param-name>user1</param-name>
<param-value>xiaoming</param-value>
</context-param>
<context-param>
<param-name>user2</param-name>
<param-value>xiaoli</param-value>
</context-param>
在动态资源servlet里面使用ServletContext读取全局参数代码
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入了另外一个Servlet");
resp.setContentType("text/html;charset=utf-8");
ServletContext servletContext = this.getServletContext();
// String value = (String)servletContext.getAttribute("username");
String value1 = servletContext.getInitParameter("user1");
String value2 = servletContext.getInitParameter("user2");
String value3 = this.getServletConfig().getInitParameter("user3");
PrintWriter writer = resp.getWriter();
// writer.println("获取到的名字为"+value);
writer.println("获取到的全局Servlet初始化参数user1为"+value1);
writer.println("获取到的全局Servlet初始化参数user2为"+value2);
writer.println("获取到的局部Servlet初始化参数user3为"+value3);
}
3.生命周期
ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放。
当web应用关闭、Tomcat关闭或者Web应用reload的时候,ServletContext对象会被销毁
4.域对象方法
凡是域对象都有如下3个方法:
void setAttribute(String name,Object value);name是String类型,value是Object类型;
往域对象里面添加数据,添加时以key-value形式添加
Object getAttribute(String name);
根据指定的key读取域对象里面的数据并返回为一个Object对象,
要是想获取value,可以直接使用强转
String value =(String)servletcontext.getAttribute(String name);
void removeAttribute(String name);
根据指定的key从域对象里面删除数据
5.域对象功能代码
向域作用对象中添加数据
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 设置编码格式
System.out.println("进入了Post()");
resp.setContentType("text/html;charset=utf-8");
// 获取ServletContext作用域对象
ServletContext servletContext = this.getServletContext();
// 向ServletContext作用域添加数据
servletContext.setAttribute("username","小明");
PrintWriter writer = resp.getWriter();
writer.println("这是一个Test,成功向作用域添加数据");
}
}
从域作用对象中读取数据
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入了另外一个Servlet");
resp.setContentType("text/html;charset=utf-8");
ServletContext servletContext = this.getServletContext();
String value = (String)servletContext.getAttribute("username");
PrintWriter writer = resp.getWriter();
writer.println("获取到的名字为"+value);
}
ServletContext存储数据特点:
全局共享,里面的数据所有动态资源都可以写入和获取
服务器启动的时候创建,服务器关闭的时候销毁,因为这是全局应用程序对象,全局共享对象。
6.Servlet使用建议
因为存在ServletContext中的数据在服务器中会长时间,这样就会占用很多内存,因此在使用ServletContext时,建议不要往里面添加过大的数据!
Day06 ServletContext的更多相关文章
- Servlet深层知识
一.ServletContext实现请求转发1.得到请求分发器:RequestDispatcherServletContext.getRequestDispatcher(String path):pa ...
- ServletContext对象
**1 ServletContext对象 1)在web应用中,由服务器创建的唯一的一个对象是ServletContext 2)ServletContext对象在每一个Servlet中取得都是相 ...
- ServletContext对象(每个工程只有一个此对象)
一]重点方法: 1>存取对象 void setAttribute(String name, Object object);//将obj ...
- JavaWeb——ServletContext
一.基本概念 说起ServletContext,一些人会产生误解,以为一个servlet对应一个ServletContext.其实不是这样的,事实是一个web应用对应一个ServletContext, ...
- The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory 这是由于项目里面的一些 ...
- 【原】tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig()Ljavax/servlet/SessionCookieConfig的解决
现象: tomcat 7 启动报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getSessionCookieConfig() ...
- 如何获得Webapp的根项目路径 即ServletContext.getRealPath() 的输入参数要以"/"开头
ServletContext.getRealPath() 的输入参数要以"/"开头 2014-03-26 15:54 5738人阅读 评论(1) 收藏 举报 版权声明:本文为博主原 ...
- 重温Servlet学习笔记--servletContext对象
一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...
- Servlet 之 ServletContext
package cn.jiemoxiaodi.servlet_servletcontext; import java.io.IOException; import java.io.PrintWrite ...
- Tomcat启动后,从spring容器中获取Bean和ServletContext
public static Object getBean(String beanName){ ApplicationContext context = ContextLoader.getCurrent ...
随机推荐
- 解决npm ERR! Cannot read properties of null (reading ‘pickAlgorithm‘)报错问题
解决方法:在终端中运行命令:npm cache clear --force 然后重新运行 npm i 命令,再次安装安装完成,没有出现报错npm run serve 运行项目,项目可以正常启动了. 安 ...
- 统计学习导论之R语言应用(三):线性回归R语言代码实战
统计学习导论(ISLR) 参考资料 The Elements of Statistical Learning An Introduction to Statistical Learning 统计学习导 ...
- Js实现监听input输入
实现原理: 默认input第一个带光标,第一个输完自动跳转到第一个输入框,以此类推, 当删除某一个输入框中的值重新输入,输入完后自动跳转到下一个 代码实现: <div class="c ...
- 2022-4-6内部群每日三题-清辉PMP
1.产品负责人一直听取一个项目干系人的意见,远远超过其他项目干系人.敏捷管理专业人士应该怎么做? A.允许这名干系人和产品负责人自己解决问题. B.与这名干系人安排一次私人会议,以澄清他们的需求. C ...
- pgsql指定部分字段去重
-- 基于ig.start_pile,ig.end_pile 字段去重 with ete as ( SELECT * from (SELECT ROW_NUMBER() OVER(PARTITION ...
- holiday07
第七天 grep常用的两种模式查找 参数 含义 ^a 行首,搜寻以a开头的行 ke$ 行尾搜寻以ke结束的行 echo 文字内容 echo会在终端显示指定参数的文字,通常会和重定向 联合使用 重定向& ...
- js常用遍历理解
1.for循环用于数组的遍历循环. 2.for in 循环主要用于遍历普通对象,i 代表对象的 key 值,a[i] 代表对应的 value. 3.forEach循环 遍历数组中的每一项,没有返回值, ...
- Windows相关产品密钥
Win7/Win8/Win10系统下Visual Studio 2013各个版本的密钥:Visual Studio Ultimate 2013: BWG7X-J98B3-W34RT-33B3R-JVY ...
- 开发Unity3D空战类插件 战机HUD系统
Fighter HUD System 当您使用Unity3D来开发飞行模拟或者空战类游戏时,这款Fighter HUD Sytem插件将会非常的适合用来充当您战机的HUD系统. 特点 此HUD系统的安 ...
- 基于LabVIEW的计时器
前言: 最近有人问我,怎么实现一个计时器计时,可以做到启动.停止.重新开始等功能,好久没关于LABVIEW的博文,借这个写个计时器相关内容. 一.Labview时间计时器介绍: 这里采用时间计时器计算 ...