JavaWEB中读取配置信息
第一种方法是使用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中读取配置信息相关推荐
- 在.net中使用强类型来读取配置信息
在.net应用中,配置信息以XML文档的形式来存储.依.net的惯例,web.config为Asp.net应用(包括Web Service应用)提供配置信息:而*.exe.config为可执行的应用( ...
- ASP.NET Core的配置(1):读取配置信息
提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...
- java如何取到配置文件中值,从配置文件中获取配置信息的几种方法
1.利用ResourceBundle类从properties文件中获取配置信息 创建配置文件并写入配置信息 image.png 使用以下代码可以轻松获取配置信息 package com.course. ...
- 从属性资源文件中读取连接数据库信息
从属性资源文件中读取连接数据库信息 jdbc.properties 属性配置文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:330 ...
- 在web.config中添加配置信息
1 在web.config中添加配置信息<configuration><connectionStrings><add name="conStr" co ...
- Failed to introspect Class [com.controller.HardWareController] from ClassLoa在ssm中读取串口信息
标题:Failed to introspect Class [com.controller.HardWareController] from ClassLoa在ssm中读取串口信息 之前使用java程 ...
- 从数码照片中读取定位信息
摘要:数码照片在拍摄时会记录照片的拍摄信息,如果拍照时开启了GPS定位服务功能,则就会记录拍摄时的经纬度坐标及高程信息.本文介绍如何读取数码照片中的位置信息,以及根据位置信息转换成shapefile格 ...
- 【Spring Boot】从配置文件中读取配置参数
前言 在生产环境中,经常会用到各种各样的参数,为了避免代码太过死板,一般将参数写入配置文件,然后需要用到参数的时候从配置文件中读取,下面总结出几种从配置文件中读取配置参数的方法. 环境搭建 现有配置文 ...
- 使用Apache Commons Configuration读取配置信息
2019独角兽企业重金招聘Python工程师标准>>> 在项目中使用一些比较新的库总会给你带来很多快乐,在这篇文章中,我将会给你介绍一个在Java中读取配置文件的框架--Apache ...
最新文章
- 序列化:ProtoBuf与JSON的比较
- testng入门_单元测试
- mysql-增删改(DML)
- iOS微博项目(一)
- (三)HTML 规范
- 教你从零开始搭建一款前端脚手架工具
- 怎样在xcode5中使用低版本sdk,解决兼容ios7ui问题
- h5实现文件下载,兼容ios、android
- ES6的新特性,前端必看知识点
- 总结完全二叉树、满二叉树、二叉排序树、二叉平衡树
- 云队友丨盘点,到底盘什么?
- 如何隐藏或显示 计算机 桌面图标,如何隐藏电脑桌面图标或文件
- JavaWeb 狂神
- 文化馆建筑方案设计原理及方案
- untiy 移除一个组件
- 日本行,一些随笔和照片
- GeoTool常见问题
- 国标GB28181安防摄像头如何通过视频流媒体服务器建设阳光考场?
- 蝶衣王究竟怎么样?来和大家聊一聊
- (json web token)JWT攻击
热门文章
- poj3009 Curling 2.0 深搜
- hdu 1754/zstu 3121 I Hate It(线段树)
- linux内存管理简介,Linux操作系统的内存管理特性简介 (3)
- java oracle 连接字符串函数_通过shell来比较oracle和java中的字符串使用
- python 连接mysql_python连接MySQL
- android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解
- lamba统计最大值,最小值,平均值,总和,个数
- 系统输入输入出设计相关知识介绍
- 程序员反思:为什么团队的产出效率那么低下?
- MYSQL数据库索引设计的原则