什么是 ServletContext?

  1. ServletContext是一个全局的储存信息的空间,表示 Servlet 上下文对象
  2. 一个 web 工程,只有一个 ServletContext 对象实例
  3. 生命周期:当web应用关闭Tomcat关闭或者Web应用reload的时候,ServletContext对象会被销毁

上述的web工程应该是指:含有一个web文件夹(含有WEB-INF、web.xml的文件夹),如下图所示。

获取ServletContext对象

// 方法一
ServletContext context = getServletContext();
// 方法二
ServletContext context = getServletConfig().getServletContext();

解释方法二:
TODO:不明白???通过getServletConfig()可以返回一个config对象,

public ServletContext getServletContext() {return this.getServletConfig().getServletContext();
}

ServletContext 类的四个作用

  1. 获取 web.xml 中配置的上下文参数 context-paramcontext.getInitParameter()
  2. 获取当前的工程路径–context.getContextPath()
  3. 获取工程部署后在服务器硬盘上的绝对路径–`context.getContextPath()``
  4. 像 Map 一样存取数据–setAttribute()、getAttribute()、removeAttribute()

测试 ServletContext 的作用

  1. 获取 web.xml 中配置的上下文参数 context-param

自定义的 Servlet 程序代码

ServletContext context = getServletContext();// 获取web.xml文件中的上下文信息,通过 param-name 获取 param-value
System.out.println("context-param 参数username的值是:" + context.getInitParameter("context"));
System.out.println("context-param 参数username的值是:" + context.getInitParameter("username"));

本文所有java代码都写在doGet()方法中

<!--context-param是上下文参数-->
<context-param><param-name>context</param-name><param-value>123456</param-value>
</context-param><context-param><param-name>username</param-name><param-value>hahah</param-value>
</context-param>

注意:以上<context-param>必须写在web.xml文件的最上面(<web-app>标签后)

输出结果:

context-param 参数username的值是:123456
context-param 参数username的值是:hahah
  1. 获取当前的工程路径
// 获取当前的工程路径,格式: /工程路径
System.out.println("获取当前工程路径:" + context.getContextPath());

输出:

获取当前工程路径:/webpro
  1. 获取工程部署后在服务器硬盘上的绝对路径
// 获取工程部署后在服务器硬盘上的绝对路径
System.out.println("获取当前工程绝对路径:" + context.getRealPath("/"));

输出:

获取当前工程绝对路径:F:\Code\webpro\out\artifacts\webpro_war_exploded\
  1. 像 Map 一样存取数据
存数据 取数据 删除数据
Map put() get() remove()
域对象 setAttribute() getAttribute() removeAttribute()
context.setAttribute("key1", "value1");
context.setAttribute("key2", "value2");System.out.println("key1的值是:" + context.getAttribute("key1"));
System.out.println("key2的值是:" + context.getAttribute("key2"));context.removeAttribute("key1");System.out.println("remove key1后 key1的值是:" + context.getAttribute("key1"));
System.out.println("remove key1后 key2的值是:" + context.getAttribute("key2"));

输出:

key1的值是:value1
key2的值是:value2
remove key1后 key1的值是:null
remove key1后 key2的值是:value2

参考文章:

  1. Servletcontext 对象
  2. 尚硅谷最新版JavaWeb全套教程

ServletContext的作用相关推荐

  1. java servletcontext_Java ServletContext对象用法解析

    ServletContext对象: ServletContext类似字节码文件对象,在web创建的时候就自动生成了,并且是唯一的,跟随着项目和服务器共存亡了.通过这个对象,我们可以向里面存数据(键值对 ...

  2. ServletContext 对象

    ServletContext 对象 问题: Request 解决了一次请求内的数据共享问题,session 解决了 用户不同请求的数据共享问题,那么不同的用户的数据              共享该怎 ...

  3. java中servletcontext_Java中的ServletContext对象

    ServletContext对象: ServletContext类似字节码文件对象,在web创建的时候就自动生成了,并且是唯一的,跟随着项目和服务器共存亡了.通过这个对象,我们可以向里面存数据(键值对 ...

  4. 【Servlet】ServletContext、ServletConfig对象学习、用户登录系统完善

    总结:request.cookie.session.context的区别 这四个对象有不同级别的作用域和生命周期. (1)request:解决了一次请求内的数据共享问题(作用域:一次请求) req.s ...

  5. ServletContext(核心内容)

    什么是ServletContext对象 ServletContext代表是一个web应用的环境(上下文)对象,ServletContext对象 内部封装是该web应用的信息,ServletContex ...

  6. ServletContext对象、ServletConfig对象

    通过前面知识点的学习,我们对于请求的处理已经可以说比较灵 活了,但是还不够.我们再介绍两个重要的对象 ServletContext 对象 和 ServletConfig 对象 ServletConte ...

  7. 【java初学】过滤器,ServletContext和JSP

    文章目录 过滤器,ServletContext和JSP 1. 过滤器 1.1 放行原则 1.2 编码集过滤器 2. ServletContext对象[重点] 2.1 ServletContext对象概 ...

  8. web核心 4-response响应对象 servletContext对象 响应行响应体 请求转发 重新定向 从服务器下载与上传资源 切换验证码 网站统计访问次数

    内容介绍 1 ServletContext对象2 response响应对象 ServletContext对象 概述 ServletContext:servlet的上下文对象(全局管理者) 一个项目有且 ...

  9. JavaWeb核心之Servlet

    一.Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是 ...

最新文章

  1. 百万奖池,鹅厂offer,2020腾讯广告算法大赛等你来战!
  2. python基础练习(一)
  3. ubuntu中minicom安装和使用
  4. 数据机房建设常用材料有哪些?
  5. 突破三个自我,你就不光是老板的料
  6. C++构造及析构执行顺序
  7. java.util -- List接口
  8. android 检测过程,Android 系统对permision的检测过程
  9. git提交报异常,fatal: The remote end hung up unexpectedly
  10. JAVA 中 Redis与ehcache对比与使用
  11. [BJOI2017]开车
  12. Android应用程序结构及运行原理
  13. 圣思园【深入JVM】笔记-第一课-论学习方法
  14. mysql front新建数据库_简述MySQL-Front数据库的具体操作
  15. 苹果手机上编辑html文件夹,苹果手机可以编辑EXCEL文件吗
  16. 2011美剧季终/剧终时间表。
  17. 千峰JAVA逆战班Day34
  18. 数据库MySQL创库、创表基本命令
  19. Vitis HLS入门指南
  20. C++开发的论坛系统 - BBS

热门文章

  1. 通信电子线路期末复习第二章下
  2. 《计算机组成与设计(ARM版)》读书笔记-第二章指令2
  3. python高通滤波器设计_python实现直方图均衡化,理想高通滤波与高斯低通滤波
  4. excel表格行宽列高怎么设置_excel表格怎么设置行高列宽
  5. Java bitset转string_JAVA 假如String01010 我要怎样把它转成bitset?
  6. web python 维护性_Lemon-Web阶段考核(三)
  7. f5 会话保持 负载均衡_四层负载均衡和七层负载均衡区别在哪里?
  8. pythonsuper_用__init __()方法理解Python super()
  9. 双屏鼠标经常跑到副屏_1+1gt;2,让ipad变成你的电脑副屏
  10. 如何修改influxdb表结构_使用nginx-lua修改influxdb API的返回结构