用ServletContext读取资源文件的三种方式

来源:互联网 发布:淘宝客服培训ppt 编辑:程序博客网 时间:2024/04/29 11:27
package www.csdn.net.sevlete;


import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Enumeration;
import java.util.Properties;


import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//用ServletContext读取资源文件的三种方式
public class UserServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {



}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
  }




public void test1(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//传统方式

File files=new File("F://db.properties");
InputStream is =new FileInputStream(files);
Properties prop=new Properties();
prop.load(is);
  //获取所有的name 名称
   Enumeration<String> enums=(Enumeration<String>) prop.propertyNames();
  //遍历
   while(enums.hasMoreElements()){
    //获取名称
    String key=enums.nextElement();
    String value=prop.getProperty(key);
    System.out.println(key+":::::"+value);
   }
}


//第一种方式
public void text2(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//获取SerlvetContext对象
ServletContext context = this.getServletConfig().getServletContext();
//(1)获取上下文路径  /项目名称 /day34
   String contextPath = context.getContextPath();
   //创建文件
File file1=new File(contextPath, "/WEB-INF/classes/db.properties");
   
//(2)获取服务器端的绝对路径
   String realPath=context.getRealPath("/WEB-INF/classes/db.properties");
   //创建文件
   File file2=new File(realPath);


   //打印  不成立,不能使用
//displayProps(new FileInputStream(file1));
//打印
displayProps(new FileInputStream(file2));

}

//第二种方式
   public void test3 (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


   //获取SerlvetContext对象
ServletContext context = this.getServletConfig().getServletContext();
displayProps(context.getResourceAsStream("/WEB-INF/classes/db.properties"));

}



              //第三种方式
public void test4 (HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


       //获取SerlvetContext对象
ServletContext context = this.getServletConfig().getServletContext();
URL url=context.getResource("/WEB-INF/classes/db.properties");
System.out.println(url.getPath());
System.out.println(url.getFile());
}








// 服务器中 用传统的方式读取资源 是不成立
public void test(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 读取该文件
File file = new File("src//db.properties");
// 是我访问没有问题,而你尼?
File files = new File("c://db.properties");
// 转换成输入流 对象
InputStream is = new FileInputStream(file);
//调用方法
displayProps(is);


}

/**
* 遍历Properties集合中的数据
* @param is
* @throws IOException
*/
public void displayProps(InputStream is) throws IOException {
// 创建.properties操作的集合对象
Properties prop = new Properties();
// 把流对象载入
prop.load(is);
// 获取所有name名称
Enumeration<String> enums = (Enumeration<String>) prop.propertyNames();
// 遍历
while (enums.hasMoreElements()) {
// 获取名称
String key = enums.nextElement();
String value = prop.getProperty(key);
System.out.println(key + ":::" + value);


}
}


}

原创粉丝点击