• 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.14in目录下有限的几个jar,根本没有目录,更不用提当前目录了:

    1. Using CATALINA_BASE:   "system omcatTomcat_8_0_14_InteljSearch"
    2. Using CATALINA_HOME:   "apache-tomcat-8.0.14"
    3. Using CATALINA_TMPDIR"apache-tomcat-8.0.14 emp"
    4. Using JRE_HOME:        "Javajdk1.7.0_45"
    5. Using CLASSPATH:       "apache-tomcat-8.0.14inootstrap.jar;apache-tomcat-8.0.14in omcat-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

  • 相关阅读:
    树形dp--P2014 [CTSC1997]选课
    背包变形--P1759 通天之潜水
    区间dp--P1880 [NOI1995]石子合并
    动态规划--P2758 编辑距离
    筛法--CF449C Jzzhu and Apples
    BZOJ3998: [TJOI2015]弦论(后缀自动机,Parent树)
    BZOJ3530: [Sdoi2014]数数(Trie图,数位Dp)
    BZOJ1444: [Jsoi2009]有趣的游戏(Trie图,矩乘)
    BZOJ1195: [HNOI2006]最短母串(Trie图,搜索)
    BZOJ3238: [Ahoi2013]差异(后缀数组)
  • 原文地址:https://www.cnblogs.com/forestwolf/p/5684655.html
Copyright © 2020-2023  润新知