我的JSP应用程序需要一些配置;所以我创建了Settings
类,它是apache commons Configuration
对象的包装器,应该在Settings
的静态构造函数中初始化,我希望使用路径到属性文件。但是如何在JSP页面之外获取应用程序路径(而不是Web路径)?我知道JSP中有config
自动变量,但我需要JSP代码之外的路径。
这个问题似乎很常见,但我是java世界的新手,无法得到解决方案。
答案 0 :(得分:1)
这是一个坏主意。您不必在Web环境之外查看应用程序所需的内容。如果您移动应用程序,则无法依赖那些可用的外部项目。
可能值得重新思考你的设计。
您可以在web.xml中将绝对路径设置为init参数。它可以在启动时使用。
答案 1 :(得分:1)
这对于可移植性问题确实是一个坏主意和配方。常见的JSP / Servlet实践是将文件放在类路径中或将其路径添加到类路径中并按如下方式获取:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("config.properties");
File file = new File(resource.getPath());
// ...
或
InputStream input = classLoader.getResourceAsStream("config.properties");
// ...
请注意,您希望在真正的Java类中执行此操作,而不是在JSP文件中执行此操作。我可以为此建议ServletContextListener
。使用contextInitialized()
方法挂钩webapp的启动。