1. package com.itheima.servlet.cfg;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.FileNotFoundException;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.net.URL;
  8. import java.util.Properties;
  9. import java.util.ResourceBundle;
  10.  
  11. import javax.servlet.ServletException;
  12. import javax.servlet.http.HttpServlet;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15.  
  16. public class LoaderCfgServletDemo1 extends HttpServlet {
  17.  
  18. //第一种方式,可以加载所有目录下的内容,但只用于web项目
  19. //test11();
  20. //test12();//ppp
  21. //test13();
  22. //第二种方式 ResouceBundle专门用于读取properties文件的,
  23. //只用于加载类路径classes目录下的文件
  24. //java项目和web项目都可以用
  25. //test21();
  26. //test22();//基名 ppp
  27.  
  28. //第三种方式 就是用ClassLoader类加载器
  29. //得到类加载器的方法 LoaderCfgServletDemo1.class.getClassLoader()
  30. //类加载器一上来定位的目录是classes
  31. //test31();
  32. //test32();
  33. //test33();
  34. //曾经的回顾
  35. //test34();
  36.  
  37. public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  38. //test11();
  39. //test12();
  40. //test13();
  41. //test21();
  42. //test22();
  43. //test31();
  44. //test32();
  45. //test33();
  46. //test34();
  47. }
  48. //pp
  49. public void test34() throws IOException, FileNotFoundException {
  50. ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
  51. URL url = cl.getResource("cfg.properties");//协议+主机名(包含端口)+资源地址
  52. //System.out.println(url.getPath());
  53.  
  54. Properties p = new Properties();
  55. p.load(new FileInputStream(url.getPath()));
  56. System.out.println(p.getProperty("p"));
  57. }
  58. //pppp
  59. public void test33() throws IOException, FileNotFoundException {
  60. ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
  61. //这是相对于classes这个目录而言,找它的上一级
  62. InputStream is = cl.getResourceAsStream("../cfg.properties");
  63. Properties p = new Properties();
  64. p.load(is);
  65. System.out.println(p.getProperty("p"));
  66. }
  67. //pp
  68. public void test32() throws IOException, FileNotFoundException {
  69. ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
  70. InputStream is = cl.getResourceAsStream("cfg.properties");//如何写路径
  71. Properties p = new Properties();
  72. p.load(is);
  73. System.out.println(p.getProperty("p"));
  74. }
  75. //ppp
  76. public void test31() throws IOException, FileNotFoundException {
  77. ClassLoader cl = LoaderCfgServletDemo1.class.getClassLoader();
  78. InputStream is = cl.getResourceAsStream("com/itheima/servlet/cfg/cfg.properties");//如何写路径
  79. Properties p = new Properties();
  80. p.load(is);
  81. System.out.println(p.getProperty("p"));
  82. }
  83. //ppp
  84. public void test22() throws IOException, FileNotFoundException {
  85. ResourceBundle rb = ResourceBundle.getBundle("com.itheima.servlet.cfg.cfg");//基名(包名.文件名(不带扩展名))
  86. System.out.println(rb.getString("p"));
  87. }
  88. //pp
  89. public void test21() throws IOException, FileNotFoundException {
  90. ResourceBundle rb = ResourceBundle.getBundle("cfg");//基名
  91. System.out.println(rb.getString("p"));
  92. }
  93. public void test13() throws IOException, FileNotFoundException {
  94. //1第一种 ,用/代表当前应用 pppp
  95. String path =getServletContext().getRealPath("/WEB-INF/cfg.properties");
  96. //System.out.println(path);
  97. Properties p = new Properties();
  98. p.load(new FileInputStream(path));
  99.  
  100. System.out.println(p.getProperty("p"));
  101. }
  102. public void test12() throws IOException, FileNotFoundException {
  103. //1第一种 ,用/代表当前应用 ppp
  104. String path =getServletContext().getRealPath("/WEB-INF/classes/com/itheima/servlet/cfg/cfg.properties");
  105. //System.out.println(path);
  106. Properties p = new Properties();
  107. p.load(new FileInputStream(path));
  108.  
  109. System.out.println(p.getProperty("p"));
  110. }
  111. private void test11() throws IOException, FileNotFoundException {
  112. //1第一种 ,用/代表当前应用 pp
  113. String path =getServletContext().getRealPath("/WEB-INF/classes/cfg.properties");
  114. //System.out.println(path);
  115. Properties p = new Properties();
  116. p.load(new FileInputStream(path));
  117. System.out.println(p.getProperty("p"));
  118. }
  119. public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  120. this.doGet(request, response);
  121. }
  122.  
  123. }

java 学习笔记 读取配置文件的三种方式的更多相关文章

  1. Java学习笔记——显示当前日期的三种方式

    一.Date类:这是一种过时的表达方式 import java.util.Date; Date date = new Date(); System.out.println((1900+date.get ...

  2. Servlet读取配置文件的三种方式

    一.利用ServletContext.getRealPath()[或getResourceAsStream()] 特点:读取应用中的任何文件.只能在web环境下. private void text3 ...

  3. Spring Boot 入门系列(二十五)读取配置文件的几种方式详解!

    在项目开发中经常会用到配置文件,之前介绍过Spring Boot 资源文件属性配置的方法,但是很多朋友反馈说介绍的不够详细全面.所以, 今天完整的分享Spring Boot读取配置文件的几种方式! S ...

  4. Java反射获取class对象的三种方式,反射创建对象的两种方式

    Java反射获取class对象的三种方式,反射创建对象的两种方式 1.获取Class对象 在 Java API 中,提供了获取 Class 类对象的三种方法: 第一种,使用 Class.forName ...

  5. java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

  6. java加载配置文件的三种方式

    比如我们要加载db.properties文件 如图: 比如我们要加载source目录下的db.properties文件.就有以下几种方式 第一种是文件io流: public static void l ...

  7. 【java多线程】多线程的创建三种方式--笔记

    申明:线程的概念以及进程的相关概念,可以参考网络上其他资料,这里只讨论多线程是怎么实现. 一.多线程的简单理解 明白什么是多线程,小生通俗一点的理解为:在一个程序里,我想同时让这个程序完成多个任务. ...

  8. Spring学习之实例化bean的三种方式

    实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...

  9. Java中 实现多线程成的三种方式(继承,实现,匿名内部类)

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. Cookie中的HttpOnly详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt377 1.什么是HttpOnly? 如果您在cookie中设置了HttpOn ...

  2. JVM和java应用服务器调优

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt413 对于调优这个事情来说,一般就是三个过程: 性能监控:问题没有发生,你并 ...

  3. ADO.NET调用存储过程

    建表 CREATE TABLE [tab_cJ] ( [id] [, ) NOT NULL PRIMARY KEY, [name] [varchar] () , [age] [int] NULL , ...

  4. oracle12之 多租户容器数据库架构

    解读: 这张幻灯片展示了三个被部署的应用程序的整合 三个不同的非cdbs成为一个单一的.幻灯片中的图形显示了一个多租户 容器数据库有四个容器:根和三个可插入的数据库.每一个 可插入数据库有它自己的专用 ...

  5. HTML canvas绘制椭圆

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 1001.A+B Format (20)代码自查(补足版)

    1001.A+B Format (20)代码自查(补足版) 谢谢畅畅酱的提醒,发现了代码中的不足,把变量名更改成更合理的名字,并且把注释也换成英文啦! 栋哥提供的代码自查的方式也帮助了我发现很多代码中 ...

  7. 201521123026 《java程序设计》第七周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 Q1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 答: public ...

  8. 201521123027 《JAVA程序设计》第四周学习总结

    1.本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. ①多态:相同方法名,不同实现: ②instanceof运算符:判断父类引用所引用的对象实例的实 ...

  9. 201521145048 《Java程序设计》第3周学习总结

    1. 本章学习总结 学会了对于一个基本类的创建,需要有属性(private public protected),方法( 静态方法 非静态方法),构造函数,main函数,在定义属性时一般使用privat ...

  10. 201521123055《Java程序设计》第1周学习总结

     1. 本章学习总结 (1)JAVA环境配置(JDK,JVM) (2)编写简易程序熟练代码结构  2. 书面作业 1.为什么java程序可以跨平台运行?执行java程序的步骤是什么? JAVA程序需要 ...