第一种方法是使用java.io和java.util包,缺点是路径的概念要清晰,

  例子: Properties prop = new Properties();

  InputStream in =

  getClass().getResourceAsStream("/common.properties");

  try {

  prop.load(in);

  pool = new JedisPool(config, prop.getProperty("pay.redis.url"));

  } catch (IOException e) {

  log.info("CachePool method load property error");

  e.printStackTrace();

  }

  第二种方法是使用Apache Commons Configuration读取配置信息,优点是能读取各种配置文件信息、统一配置、自动重载等 (注意,该例子中用了/ 绝对路径,SpringJUnit4Cla***unner 做测试时,会提示找不到文件,去掉/后解决,可能因为加载配置文件的方式不同)

  例子下载

  PropertiesConfiguration redisConfig = null;

  try {

  redisConfig = new PropertiesConfiguration("config.properties");

  } catch (ConfigurationException e) {

  e.printStackTrace();

  } String url = redisConfig.getString("pay.redis.url");

  路径寻找顺序为:

  当前路径

  用户主目录路径(如果是jar包,默认对应jar包根目录)

  classpath (默认对应WEB-INF/classes)

  路径链接全文:下载

  ClassLoader 提供了两个方法用于从装载的类路径中取得资源:

  public URL getResource (String name);

  public InputStream getResourceAsStream (String name);

  这里name是资源的类路径,它是相对与“/”根路径下的位置。getResource得到的是一个URL对象来定位资源,而getResourceAsStream取得该资源输入流的引用保证程序可以从正确的位置抽取数据。

  但是真正使用的不是ClassLoader的这两个方法,而是Class的 getResource和getResourceAsStream方法,因为Class对象可以从你的类得到(如YourClass.class或 YourClass.getClass()),而ClassLoader则需要再调用一YourClass.getClassLoader()方法,不过根据JDK文档的说法,Class对象的这两个方法其实是“委托”(delegate)给装载它的ClassLoader来做的,所以只需要使用 Class对象的这两个方法就可以了。

  因此,直接调用 this.getClass().getResourceAsStream(String name) ;获流, 静态化方法中则使用ClassLoader.getSystemResourceAsStream (String name) 。下载

  下面是一些得到classpath和当前类的绝对路径的一些方法。你可能需要使用其中的一些方法来得到你需要的资源的绝对路径

  1.this.getClass().getResource("") 得到的是当前类class文件的URI目录。不包括自己! 如:file:/D:/workspace/jbpmtest3/bin/com/test/

  2.this.getClass().getResource("/") 得到的是当前的classpath的绝对URI路径 。 如:file:/D:/workspace/jbpmtest3/bin/

  3.this.getClass() .getClassLoader().getResource("") 得到的也是当前ClassPath的绝对URI路径 。如:file:/D:/workspace/jbpmtest3/bin/

  4.ClassLoader.getSystemResource("") 得到的也是当前ClassPath的绝对URI路径 。 如:file:/D:/workspace/jbpmtest3/bin/

  5.Thread.currentThread().getContextClassLoader ().getResource("") 得到的也是当前ClassPath的绝对URI路径 。 如:file:/D:/workspace/jbpmtest3/bin/

  6.ServletActionContext.getServletContext().getRealPath(“/”)下载

  Web应用程序 中,得到Web应用程序的根目录的绝对路径。这样,我们只需要提供相对于Web应用程序根目录的路径,就可以构建出定位资源的绝对路径。 如:file:/D:/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/WebProject

  注意点:

  1.尽量不要使用相对于System.getProperty("user.dir")当前用户目录的相对路径。下载

  2.尽量使用URI形式的绝对路径资源。它可以很容易的转变为URI,URL,File对象。

  3.尽量使用相对classpath的相对路径。不要使用绝对路径。使用上面ClassLoaderUtil类的public static URL getExtendResource(String relativePath)方法已经能够使用相对于classpath的相对路径定位所有位置的资源。

  4.绝对不要使用硬编码的绝对路径。因为,我们完全可以使用ClassLoader类的getResource("")方法得到当前classpath的绝对路径。如果你一定要指定一个绝对路径,那么使用配置文件,也比硬编码要好得多!

  获得CLASSPATH之外路径的方法:

  URL base = this.getClass().getResource(""); //先获得本类的所在位置,如/home/popeye/testjava/build/classes/net/

  String path = new File(base.getFile(), "……/……/……/"+name).getCanonicalPath(); //就可以得到/home/popeye/testjava/name

  另外,如果从ANT启动程序,this.getClass().getResource("")取出来的比较怪,直接用JAVA命令行调试就可成功。

转载于:https://blog.51cto.com/12079384/1853315

JavaWEB中读取配置信息相关推荐

  1. 在.net中使用强类型来读取配置信息

    在.net应用中,配置信息以XML文档的形式来存储.依.net的惯例,web.config为Asp.net应用(包括Web Service应用)提供配置信息:而*.exe.config为可执行的应用( ...

  2. ASP.NET Core的配置(1):读取配置信息

    提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...

  3. java如何取到配置文件中值,从配置文件中获取配置信息的几种方法

    1.利用ResourceBundle类从properties文件中获取配置信息 创建配置文件并写入配置信息 image.png 使用以下代码可以轻松获取配置信息 package com.course. ...

  4. 从属性资源文件中读取连接数据库信息

    从属性资源文件中读取连接数据库信息 jdbc.properties 属性配置文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:330 ...

  5. 在web.config中添加配置信息

    1 在web.config中添加配置信息<configuration><connectionStrings><add name="conStr" co ...

  6. Failed to introspect Class [com.controller.HardWareController] from ClassLoa在ssm中读取串口信息

    标题:Failed to introspect Class [com.controller.HardWareController] from ClassLoa在ssm中读取串口信息 之前使用java程 ...

  7. 从数码照片中读取定位信息

    摘要:数码照片在拍摄时会记录照片的拍摄信息,如果拍照时开启了GPS定位服务功能,则就会记录拍摄时的经纬度坐标及高程信息.本文介绍如何读取数码照片中的位置信息,以及根据位置信息转换成shapefile格 ...

  8. 【Spring Boot】从配置文件中读取配置参数

    前言 在生产环境中,经常会用到各种各样的参数,为了避免代码太过死板,一般将参数写入配置文件,然后需要用到参数的时候从配置文件中读取,下面总结出几种从配置文件中读取配置参数的方法. 环境搭建 现有配置文 ...

  9. 使用Apache Commons Configuration读取配置信息

    2019独角兽企业重金招聘Python工程师标准>>> 在项目中使用一些比较新的库总会给你带来很多快乐,在这篇文章中,我将会给你介绍一个在Java中读取配置文件的框架--Apache ...

最新文章

  1. 序列化:ProtoBuf与JSON的比较
  2. testng入门_单元测试
  3. mysql-增删改(DML)
  4. iOS微博项目(一)
  5. (三)HTML 规范
  6. 教你从零开始搭建一款前端脚手架工具
  7. 怎样在xcode5中使用低版本sdk,解决兼容ios7ui问题
  8. h5实现文件下载,兼容ios、android
  9. ES6的新特性,前端必看知识点
  10. 总结完全二叉树、满二叉树、二叉排序树、二叉平衡树
  11. 云队友丨盘点,到底盘什么?
  12. 如何隐藏或显示 计算机 桌面图标,如何隐藏电脑桌面图标或文件
  13. JavaWeb 狂神
  14. 文化馆建筑方案设计原理及方案
  15. untiy 移除一个组件
  16. 日本行,一些随笔和照片
  17. GeoTool常见问题
  18. 国标GB28181安防摄像头如何通过视频流媒体服务器建设阳光考场?
  19. 蝶衣王究竟怎么样?来和大家聊一聊
  20. (json web token)JWT攻击

热门文章

  1. poj3009 Curling 2.0 深搜
  2. hdu 1754/zstu 3121 I Hate It(线段树)
  3. linux内存管理简介,Linux操作系统的内存管理特性简介 (3)
  4. java oracle 连接字符串函数_通过shell来比较oracle和java中的字符串使用
  5. python 连接mysql_python连接MySQL
  6. android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解
  7. lamba统计最大值,最小值,平均值,总和,个数
  8. 系统输入输入出设计相关知识介绍
  9. 程序员反思:为什么团队的产出效率那么低下?
  10. MYSQL数据库索引设计的原则