/*
*ServletContext是javaweb四大域对象之一(域对象用来在Servlet中传递数据)
*1、域对象必须要有存数据的功能
*2、域对象必须要有取数据的功能
*3、域对象内部其实有一个Map
* PageContext
* ServletRequest
* HttpSession
* ServletContext
*所有域对象都有存取数据的功能 因为域对象内部有一个Map用来存储数据 下面是ServletContext对象用来操作数据的方法
* void setAttribute(String name,Object value) 用来存储一个对象 也可以称之为存储一个域属性 例如servletContext.setAttribute("XX","XXX"),在ServletContext中保存了一个域属性 域属性名称为XX,域属性的值为XXX
*如果多次调用该方法 并且使用相同的name 那么会覆盖上一次的值 这一特性与Map相同
* Object getAttribute(String name)用来获取ServletContext中的数据 当前在获取之前需要先存储才行 例如String value=(String)servletContext.getAttribute("XX")获取名为XX的域属性
* void removeAttribute(String name) 用来移除ServletContext中的域属性 如果参数name指定的域属性不存在 那么本方法什么都不做
* Enumeration getAttributeNames() 获取所有域属性的名称
*
*获取应用初始化参数
*Servlet也可以获取初始化参数 但它是局部的参数 一个Servlet只能获取自己的初始化参数 不能获取别人的 即初始化参数只为一个Servlet准备
*可以配置公共的初始化参数 为所有Servlet而用 要使用ServletContext才能使用
* 可以使用 ServletContext来获取在web.xml文件中配置的应用初始化参数 应用初始化参数与Servlet初始化参数不同
*<context-param>
<param-name>con</param-name>
<param-value>abc</param-value>
</context-param>
*app.getInitParameter("con");通过参数名 获取参数值
*
*获取真实路径
* 可以使用ServletContext对象来获取Web应用下的资源 例如在hello应用的根目录下创建a.txt文件 现在想在Servlet中获取这个资源 可以使用ServletContext来获取
* 获取a.txt的真实路径 String realPath=servletContext.getRealPath("/a.txt")realPath的值为a.txt绝对路径为D:\tomcat9\apache-tomcat-9.0.1\webapps\day03_01\a.txt
*获取b.txt的真实路径 String realPath=servletContext.getRealPath("WEB-INF/b.txt");
*
*获取资源流
* 不只可以获取资源的路径 还可以通过ServletContext获取资源流 即把资源以输入流的方式获取
*获取a.txt资源流 InputStream in = servletContext.getReasourceAsStream("/a.txt");
*获取b.txt资源量 InputStream in = servletContext.getReasourceAsStream("/WEB-INF/b.txt");
*
*获取指定目录下所有资源路径
* 可以使用ServletContext获取指定目录下所有资源路径 例如获取/WEB-INF下所有资源的路径
* Set set = context.getReasourcePaths("/WEB-INF");
* System.out.println(set);
* 本方法 必须以"/"开头
*
*/
ServletContext app = request.getServletContext()
app.setAttribute("name", "aa")
String name = (String) app.getAttribute("name")
System.out.println(name)
System.out.println(app.getInitParameter("con"))
String path = this.getServletContext().getRealPath("/index.jsp")
System.out.println(path)
InputStream in = this.getServletContext().getResourceAsStream("/index.jsp")
Set<String> set = this.getServletContext().getResourcePaths("/WEB-INF")
System.out.println(set)