如何从外部JSP代码获取应用程序路径?

时间:2010-08-05 13:09:31

标签: java jsp

我的JSP应用程序需要一些配置;所以我创建了Settings类,它是apache commons Configuration对象的包装器,应该在Settings的静态构造函数中初始化,我希望使用路径到属性文件。但是如何在JSP页面之外获取应用程序路径(而不是Web路径)?我知道JSP中有config自动变量,但我需要JSP代码之外的路径。

这个问题似乎很常见,但我是java世界的新手,无法得到解决方案。

2 个答案:

答案 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的启动。

另见: