一,加载配置文件的三种方式
@WebServlet("/servletDemo1") public class servletDemo1 extends HttpServlet { private static final long serialVersionUID = 1L; /** * ServeltContext 的getServletContext()获取的默认路径为该项目在Tomcat中的路径 * 即D:\javawebtool\apache-tomcat-8.5.40\wtpwebapps\web04 * ClassLoader 的getClassLoader()获取的默认路径为项目在Tomcat中工程下的WEB-INFO\classes目录 * 即D:\javawebtool\apache-tomcat-8.5.40\wtpwebapps\web04\WEB-INFO\classes * * * request对象中包含请求的信息 * response响应数据给浏览器 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = getServletContext(); //创建属性对象 Properties p = new Properties(); //获取web工程文件方式一:相对路径方式,获取文件在服务器上的绝对路径 //config1.properties放在了src下.D:\javawebtool\apache-tomcat-8.5.40\wtpwebapps\web04下没有src目录 //String path = context.getRealPath("src/config1.properties"); String path = context.getRealPath("config.properties"); //下面一行代码会报错,路径问题 ,这里的相对路径是根据jre来确定的,但现在是一个web工程,jre后面会由Tomcat管理,相对路径为Tomcat里面bin目录 InputStream it = new FileInputStream(path); //获取web工程文件方式二:转换为流对象。前面隐藏当前工程的根目录 //InputStream it = context.getResourceAsStream("config.properties"); //获取web工程文件方式三:类加载器方式。this.getClass()获取当前类的class;.getClassLoader()获取类加载器对象。用把当前类加载到虚拟机的那个类加载器去获取资源 //InputStream it = this.getClass().getClassLoader().getResourceAsStream("../../config.properties"); p.load(it); String string = p.getProperty("name"); System.out.println(string); }
原文:https://www.cnblogs.com/noperx/p/11317715.html