ServletContext的作用

什么是 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 一样存取数据
存数据取数据删除数据
Mapput()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全套教程
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值