一、什么是ServletContext

  • ServletContext代表是一个web应用的上下文对象(web应用对象)
  • 里面封装的都是web应用信息
  • 一个ServletContext对应一个应用

二、ServletContext的生命周期

  • 在服务器一启动的时候就会创建
  • 在服务器关闭的时候销毁

三、如何获得上下文

  • 通过init方法当中一个参数ServletConfig来获取
public void init(ServletConfig config) throws ServletException {
System.out.println(config);
ServletContext context = config.getServletContext();
System.out.println(context);
} /** 运行结果
* org.apache.catalina.core.StandardWrapperFacade@3e478880
* org.apache.catalina.core.ApplicationContextFacade@24391b1e
*/
  • 直接在HttpServlet当中获取

    • this.getServletContext
    • 这种方法本质还是通过config来去获取的

四、获取全局的初始化参数

初始化参数不能再某一个Servlet当中来去配置。在最外层来去配置

获取全局初始化参数

五、获得Web应用中某一个资源的绝对路径

各文件的结构

获取 WebContent 下的文件

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String realPatha = context.getRealPath("a.txt");
System.out.println(realPatha);
String realPathb = context.getRealPath("WEB-INF/b.txt");
System.out.println(realPathb);
}

获取 Java Resources 下的文件

  • 方法一:和获取 WebContent 下的文件一样,先获取根目录,然后拼接。
  • 方法二:通过类加载器获取字节码目录
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext context = this.getServletContext(); String pathc = one.class.getClassLoader().getResource("c.txt").getPath();
System.out.println(pathc);
// 解决路径中 空格显示为 %20
pathc = URLDecoder.decode(pathc, "utf-8");
System.out.println(pathc); String pathd = one.class.getClassLoader().getResource("com/xzh/servlet/d.txt").getPath();
pathd = URLDecoder.decode(pathd, "utf-8");
System.out.println(pathd); String pathe = one.class.getClassLoader().getResource("e.txt").getPath();
pathe = URLDecoder.decode(pathe, "utf-8");
System.out.println(pathe);
}

六、ServletContext是一个域对象

  • 域 :能够存储数据。
  • 域对象 :能够存取数据数据就的对象。

ServletContext域对象的作用范围:

  • 整个web应用,所有的web资源都可以进行存取数据
  • 数据是可以共享的

获取完ServletContext之后向里面写数据

context.setAttribute(String name,Object value);

获取完ServletContext之后,通过name取出存放的数据

context.getAttribute(String name);

获取完ServletContext之后,删除指定名称的值

Context.removeAttribute(String name);

只要是一个域对象上,基本上里面都有这几个方法

ServletContext (上下文对象)的更多相关文章

  1. [07] ServletContext上下文对象

    1.上下文的概念 我们在说到Servlet的继承关系时,提到自定义Servlet实际上间接实现了Servlet和ServletConfig两个接口,其中ServletConfig接口中定义了一个方法叫 ...

  2. 上下文对象-请求对象-响应对象(ServletContext - response - request)

    目录 上下文对象-请求对象-响应对象 ServletContext response request 上下文对象-请求对象-响应对象 ServletContext 什么是ServletContext ...

  3. Context上下文对象(抄书的)

    Servlet上下文 ServletContext 上下文接口    ServletContext接口    每一个应用都有唯一的一个上下文对象,即为ServletContext对象    Servl ...

  4. Servlet配置对象、上下文对象、多线程问题

    一.Servlet配置对象(ServletConfig):Servlet初始化时,容器调用其init(ServletConfig)方法,传递该对象. 1.获得对象方法: (1).直接使用getServ ...

  5. EL的隐含对象(一)【页面上下文对象】

    页面上下文对象为pageContext,用于访问JSP内置对象(例如:request.response.out.session.exception.page等)和ServletContext.在获取到 ...

  6. EF上下文对象线程内唯一性与优化

    在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,也是为了尽早释放上下文对象, 但是如果有一个业务逻辑调用 ...

  7. 【无私分享:ASP.NET CORE 项目实战(第二章)】添加EF上下文对象,添加接口、实现类以及无处不在的依赖注入(DI)

    目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 上一章,我们介绍了安装和新建控制器.视图,这一章我们来创建个数据模型,并且添加接口和实现类. 添加EF上下文对象 按照我们以前 ...

  8. [原创]java WEB学习笔记47:Servlet 监听器简介, ServletContext(Application 对象), HttpSession (Session 对象), HttpServletRequest (request 对象) 监听器,利用listener理解 三个对象的生命周期

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  9. [译] ASP.NET 生命周期 – ASP.NET 上下文对象(七)

    使用 HttpRequest 对象 HttpRequest 对象描述的是一个正在被处理的 HTTP 请求.下表列举了 HttpRequest 中的属性,它们提供了当前请求的相关信息(HttpReque ...

随机推荐

  1. Bzoj2832 / Bzoj3874 宅男小C

    Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 124  Solved: 26 Description 众所周知,小C是个宅男,所以他的每天的食物要靠外 ...

  2. github: Permission denied (publickey). 问题解决方法

    部署服务器过程中想clone自己github中的库,结果出现Permission denied (publickey).的错误,解决方法是添加服务器公钥到github的settings->SSH ...

  3. 使用idea+Tomcat搭建servlet服务器

    1.使用java 搭建一个简单的Servlet 服务器 https://blog.csdn.net/qq_35164169/article/details/76146655

  4. 结合promise对原生fetch的两个then用法理解

    前言:该问题是由于看到fetch的then方法的使用,产生的疑问,在深入了解并记录对promise的个人理解 首先看一下fetch请求使用案例: 案例效果:点击页面按钮,请求当前目录下的arr.txt ...

  5. gcc -rpath 指定动态库路径

    gcc -rpath 指定动态库路径 http://blog.csdn.net/v6543210/article/details/44809405

  6. C# 笔记——数据类型

    一张图读懂C#数据类型:

  7. Jmeter接口测试示例

    如果是Web,需要使用badboy进行录制,今天讲的是接口,因此可以不用录制. (1)新建测试计划 (2)添加http请求默认值 (3)添加http信息头管理器 (4)添加token的正则表达式:&q ...

  8. python初学-列表

    列表操作: 列表一般需要先调用方法后才能打印,不能直接打印调用的方法 因为列表可以修改 一般不会返回一个新列表 # 列表 # new_names = ['lzc','lzc2','lzc3'] # 下 ...

  9. windows下tomcat在当前窗口运行,不在新弹出的窗口运行

    window下tomcat在当前窗口启动,不在一个新的窗口启动startup.bat中最下几行goto setArgs:doneSetArgscall "%EXECUTABLE%" ...

  10. Django_admin源码流程

    admin.py from django.contrib import admin from . import models """ 通过原生的django admin来 ...