ServletContext方法
当web容器启动时,他会为每个web应用都创建一个对应的servletContext对象,它代表当前web应用,要有面向对象的方法
context是域对象,和request,session,page一样都是域,只要一提到ServletContext域,1就要想到容器,2这个容器的作用范围,也就是web应用程序的范围
首先得到ServletContext对象
//得到servletContext对象 1
ServletContext context=this.getServletContext();
//得到ServleContext对象 2
ServletContext context2=this.getServletConfig().getServletContext();
ServletContext context=this.getServletContext();
//得到ServleContext对象 2
ServletContext context2=this.getServletConfig().getServletContext();
Context对象的应用场景
获取web应用的初始化要先在配置文件里配置,它与init初始化参数的不同是,Context初始化参数是整个web容器的servlet都可以用,
每一个web应用都会有一个servletContext,就是每穿建的工程都会有。
资源文件读取问题
资源文件在servlet程序里,就用servletContext直接读取
//1在servlet读取资源文件,用getResourceAsStream方法使文件变成一个输入流
InputStream in=this.getServletContext().getResourceAsStream("/db.properties");
Properties pro=new Properties();//Map集合形式存放数据
pro.load(in);
String url=pro.getProperty("url");
System.out.println(url);
InputStream in=this.getServletContext().getResourceAsStream("/db.properties");
Properties pro=new Properties();//Map集合形式存放数据
pro.load(in);
String url=pro.getProperty("url");
System.out.println(url);
//2用getRealPath方法得到文件的绝对路径,可以用于截取文件名称
String path=this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
String filename=path.substring(path.lastIndexOf("\\")+1);
System.out.println("当前读取的资源名称为"+filename);
FileInputStream in1=new FileInputStream(path);
pro.load(in1);
String uu=pro.getProperty("url");
String path=this.getServletContext().getRealPath("/WEB-INF/classes/db.properties");
String filename=path.substring(path.lastIndexOf("\\")+1);
System.out.println("当前读取的资源名称为"+filename);
FileInputStream in1=new FileInputStream(path);
pro.load(in1);
String uu=pro.getProperty("url");
如果读取配置文件的程序不是servlet的话,就只能通过类装载器去读了,其实和在servlet里读取资源文件一样,都是有两种方式,1把资源文件变成一个流,进行读取 2得到资源文件的绝对路径,然后把路径放进FileInputStream流里,创建Properties进行操作。
获取到更新后的资源文件1,先通过类装载的方式得到文件的位置2
然后在通过传统方式进行读取,