JSP/Servlet Web应用中.properties文件的放置与读取

本地项目

在本地类库中,我经常使用当前目录来放置.properties文件,这时调用方只要引用我的jar,并且将我的.properties放在他的classpath里面即可,比如:

  1. p.load(new FileInputStream("HanLP.properties"));

这样类似下图的项目结构就可以跑起来:

JSP/Servlet Web项目

但是到了Web项目时,情况大不相同。在Tomcat下,classpath里只含apache-tomcat-8.0.14\bin目录下有限的几个jar,根本没有目录,更不用提当前目录了:

  1. Using CATALINA_BASE:   "\system\tomcat\Tomcat_8_0_14_InteljSearch"
  2. Using CATALINA_HOME:   "\apache-tomcat-8.0.14"
  3. Using CATALINA_TMPDIR"\apache-tomcat-8.0.14\temp"
  4. Using JRE_HOME:        "\Java\jdk1.7.0_45"
  5. Using CLASSPATH:       "\apache-tomcat-8.0.14\bin\bootstrap.jar;\apache-tomcat-8.0.14\bin\tomcat-juli.jar"

解决方案

一般而言,有三种方案:

通过 ClassLoader#getResourceAsStream() 来加载:

  1. p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("HanLP.properties"));

此时HanLP.properties可以放在下列目录:

Webapp/WEB-INF/lib

Webapp/WEB-INF/classes

Appserver/lib

JRE/lib

特别的,如果你正处于开发状态,可以简单地将HanLP.properties扔到src目录里或者resource目录里。提醒,如果放到src或者resource目录里,那么每次deploy都会覆写classes目录下的配置文件,并且你无法使用Properties#store()来保存配置文件。


放到 web 目录下,通过ServletContext#getResourceAsStream() 读取。

  1. Properties properties = new Properties();
  2. properties.load(getServletContext().getResourceAsStream("/WEB-INF/filename.properties"));


用绝对路径,通过普通的 java.io 方式读取。

  1. Properties properties = new Properties();
  2. properties.load(new FileInputStream("/absolute/path/to/filename.properties");

不过这种方式的可移植性并不好,并不推荐。

Reference

http://stackoverflow.com/questions/2161054/where-to-place-configuration-properties-files-in-a-jsp-servlet-web-application

转载于:https://www.cnblogs.com/forestwolf/p/5684655.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值