JSP/Servlet Web应用中.properties文件的放置与读取
本地项目
在本地类库中,我经常使用当前目录来放置.properties文件,这时调用方只要引用我的jar,并且将我的.properties放在他的classpath里面即可,比如:
- p.load(new FileInputStream("HanLP.properties"));
这样类似下图的项目结构就可以跑起来:

JSP/Servlet Web项目
但是到了Web项目时,情况大不相同。在Tomcat下,classpath里只含apache-tomcat-8.0.14\bin目录下有限的几个jar,根本没有目录,更不用提当前目录了:
- Using CATALINA_BASE: "\system\tomcat\Tomcat_8_0_14_InteljSearch"
- Using CATALINA_HOME: "\apache-tomcat-8.0.14"
- Using CATALINA_TMPDIR: "\apache-tomcat-8.0.14\temp"
- Using JRE_HOME: "\Java\jdk1.7.0_45"
- Using CLASSPATH: "\apache-tomcat-8.0.14\bin\bootstrap.jar;\apache-tomcat-8.0.14\bin\tomcat-juli.jar"
解决方案
一般而言,有三种方案:
一
通过 ClassLoader#getResourceAsStream() 来加载:
- 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() 读取。
- Properties properties = new Properties();
- properties.load(getServletContext().getResourceAsStream("/WEB-INF/filename.properties"));
三
用绝对路径,通过普通的 java.io 方式读取。
- Properties properties = new Properties();
- 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
JSP/Servlet Web应用中.properties文件的放置与读取的更多相关文章
- 读取web工程中.properties资源文件的模板代码
读取web工程中.properties资源文件的模板代码 // 读取web工程中.properties资源文件的模板代码 private void test2() throws IOException ...
- ASP.NET Web网站中App_Code文件夹的作用及使用场景
原文地址:Web Site项目和ASP.NET Web Application中App_Code文件夹的作用作者:宾的宾 我现在要建一个ASP.NET的网站了,不难吧,开始动手.如下图: 这种方法建立 ...
- java中常量文件的配置与读取
java中常量文件的配置与读取: package com.floor.shop.user.util; import java.io.InputStream; import java.io.InputS ...
- [ Servlet / JSP ] J2EE Web Application 中的 JSESSIONID 是什么?
JSESSIONID is a cookie in J2EE web application which is used in session tracking. Since HTTP is a st ...
- JSP中properties文件的路径问题
做练习的时候,写了个properties文件,放在src/servlet/目录下,访问文件问题花了点时间折腾,最终得到解决,记下. 环境:eclipse jee oxygen,tomcat 9.0. ...
- JSP Servlet WEB生命周期
[转载] JavaWeb的生命周期是由Servlet容器来控制的总的来说分为三个阶段1.启动阶段:加载web应用相关数据,创建ServletContext对象,对Filter和servlet进行初始化 ...
- 【jsp/servlet】 javaweb中的一些简单问题整理
1 jsp工作原理 答: 动态网页技术标准blabla...jsp程序的工作方式为请求/响应模式,客户端发出http请求,jsp程序收到请求后进行处理,并返回处理的结果. jsp程序需要运行在特定的w ...
- JSP/Servlet Web 学习笔记 DayFour
Servlet概述 Servelt是使用Java Servlet应用程序接口及相关类和方法的Java程序. Servlet是用Java编写的Server端程序,它与协议和平台无关.Servlet运行于 ...
- JSP/Servlet Web 学习笔记 DayOne
JSP概述 1)JSP是一种动态网页技术标准,它是在传统的页面HTML文件中插入Java程序段和JSP标记(tag),从而形成JSP文件(*.jsp),也称JSP页面. 2)JSP容器是一个支持JSP ...
随机推荐
- Organize Your Train part II 字典树(此题专卡STL)
Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8787 Acce ...
- Linux系统备份还原工具1(DD)(应用实例)
DD使用教程:http://www.cnblogs.com/EasonJim/p/7442223.html 以下实例没经过大量测试,可能在一些机器上不会有效. 一般围绕以下几点进行设置: 1.dd完后 ...
- JSP标准标签库(JSTL)
JSTL:JSP Standard Tag Library:JSP标准标签库 以下内容引用自http://wiki.jikexueyuan.com/project/jsp/standard-tag-l ...
- atom的react自动补全插件
atom-react-autocomplete–项目内,组件名及状态的自动补全 autocomplete-js-import–模块导入智能提示 emmet-jsx-css-modules– React ...
- struts2学习笔记(二)—— 获取登录信息及计算在线人数
实现目的: 1.点击"Login"的超链接.进入登录页面 2.填写登录信息.提交表单,将用户信息保存进Session 3.显示用户名,并计算在线 ...
- WinExec可能会引起消息重入
WinExec不仅会造成延迟,并且还会引起消息的重入. 以下是调用堆栈: WinvoiceCC.exe!CWinvoiceCCDlg::OnMsgHttpReq(unsigned int wParam ...
- JS获取地址栏并拼接參数
比方地址栏是这种:http://www.aa.com/detail.aspx?code=1&start=2014-12-01&end=2014-12-23&name=abc 要 ...
- .Net 与 Javascript 混合编程系列
之前的文章有提到 edge 和 nodejs 交互,通过node的模块为C# 提供一些扩展,这个还是比較方便. 这里说下为什么要使用js. 1.SharpKit是一个用于在编译时将C#语言转换为Jav ...
- [Java][Android] 多线程同步-主线程等待全部子线程完毕案例
有时候我们会遇到这种问题:做一个大的事情能够被分解为做一系列相似的小的事情,而小的事情无非就是參数上有可能不同样而已! 此时,假设不使用线程,我们势必会浪费许多的时间来完毕整个大的事情.而使用线程的话 ...
- hadoop分布式安装部署具体视频教程(网盘附配好环境的CentOS虚拟机文件/hadoop配置文件)
參考资源下载:http://pan.baidu.com/s/1ntwUij3视频安装教程:hadoop安装.flvVirtualBox虚拟机:hadoop.part1-part5.rarhadoop文 ...