ServletContext对象学习:
问题:request 对象解决了一次请求内数据的共享问题,session解决了用户的不同请求的数据共享问题,那么,不同用户的数据共享问题该如何解决呢?
解决:使用ServletContext对象
作用:解决了不同用户的数据共享问题
原理:ServletContext对象是由服务器创建,一个项目只有一个对象,不管在项目的任意位置进行获取,得到的都是同一对象。那么不同用户发起的请求获取到的也就是同一个对象,该对象由用户共同拥有。
特点:
    1.由服务器创建
    2.用户共享
    3.一个项目只有一个
生命周期:
    服务器启动到服务器关闭
作用域:项目内
使用:
1.获取ServletContext对象(三种方式)

ServletContext sc=this.getServletContext();
ServletContext sc2=this.getServletConfig().getServletContext();
ServletContext sc3=this.req.getSession().getServletContext();

使用Servlet对象完成数据共享
2.数据存储

sc,setAttribute(String name,String value);

3.数据获取

sc.getArrtribute("str");//返回的是object类型的数据

注意:不同的用户可以给ServletContext对象进行数据的存取,获取数据不存在时返回null。
4.获取项目中的web.xml文件的全局配置数据

sc.getIntiParameter(String name);

根据键名返回web.xml中配置的全局数据的值,返回String类型,如果不存在,则返回null

sc.getIntiParameterNames();

返回键名的枚举

配置方式:注意,一组标签只能存储一组键值对,多组数据可以使用多个进行存储

<context-param>
	<param-name>name</param-name>
	<param-value>zhangsan</param-value>
</context-param>

作用:将静态数据域代码进行解耦


获取webcontent下的资源的绝对路径

String path=sc.getRealPath(String path);
//获取的路径为项目根目录,path参数为项目根目录下的路径



获取webcontent下的资源流对象

InputStream is=sc.getResourceAsstream(String path);

注意:此种方式只能获取到项目根目录下的资源流对象,class文件的资源流对象需要利用类加载器来获取。


我是一条没有感情的分隔线


ServletConfig对象:
问题:
使用ServletContext对象可以获取web.xml的全局配置文件,在web.xml中,每个Servlet也可以进行单独的配置,那么该如何获取这些配置信息呢?
解决:使用ServletConfig对象
作用:ServletConfig 对象是Servlet的专属对象,每个Servlet都单独拥有一个ServletConfig对象,用来获取web.xml中的配置信息
使用:
    获取ServletConfig对象
    获取web.xml中Servlet的配置信息