JavaWeb 开发之 ServletContext 的和使用

一、什么是ServletContext?

  1. ServletContext是web应用的上下文对象,是一个域对象(能够存取数据的对象)
  2. ServletContext在服务器启动时会自动帮你建好,一个应用只有一个ServletContext。创建的多个Servlet都是共用一个ServletContext。
  3. ServletContext中封装着web的应用信息
  4. 所有的servlet都可以向其中存取数据,数据是共享的

注意:ServletContext是全局的

二、ServletContext的生命周期

服务器启动时创建,服务器关闭时结束

三、获取ServletContext的方法

1. 通过init方法中ServletConfig参数来获取
在这里插入图片描述
在这里插入图片描述
可以看到ServletContext被输出了

2. 在Servlet中获取
在这里插入图片描述

需要注意,如果想在service方法中获取ServletContext需要在init方法中加上super.init(config);
这是因为,this.getServletContext();其实就是帮你去init方法中调用 config.getServletContext();
而我们覆盖了父类的init方法,所以如果不加上这行代码。会找不到config的值,造成空指针异常错误

运行结果:
在这里插入图片描述

四、ServletContext获取绝对地址

在这里我们使用getRealPath方法,他的作用是获取到当前项目的根路径并与输入的的字符串拼接,形成新的地址。

ServletContext servletContext = this.getServletContext();
String realPath = servletContext.getRealPath("zg.doc");

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以看到输出的realPath就是我的项目根目录加上我输入的zg.doc

五、ServletContext进行数据的读写删

1. 写入数据我们使用setAttribute(name, object);
存入数据时采用键值对的形式
在这里插入图片描述

 通过这样的方法我们就向servletContext中写入了一个名为userName,值为张三的数据
    servletContext2.setAttribute("userName", "zhangsan");

2.读取数据时我们使用getAttribute(name);
通过输入名字获得其中的数据

在这里插入图片描述

通过这样的方法我们就可以从servletContext中读取一个名为userName的数据
  servletContext2.getAttribute("username");

在这里插入图片描述
可以看到我们已经成功得到了之前存入的userName

发布了26 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/showadwalker/article/details/83902320