在我的Web应用程序的许多地方,我需要一个特定的String:
request.getServletContext().getRealPath("/");
// I can only get this once the web-app starts
有时一个简单的java类需要知道这个字符串。我不希望每次将这个字符串传递给类的功能。一种方法是在Web应用程序的最开头将此字符串存储在文件中。每次我需要这个,只需阅读文件。但这似乎不是一个很好的选择。还有其他出路吗?
可以存储在应用程序的context.xml
中。如果有可能我该怎么做?
如果有更好的方法请建议。
我使用tomcat作为服务器。
答案 0 :(得分:1)
调用应用程序启动时运行以下代码(例如使用ServletContextListener):
public void contextInitialized(ServletContextEvent sce) {
ServletContextRootRealPath.set(sce.getServletContext().getRealPath("/"));
}
然后,只要你需要它,你只需致电
ServletContextRootRealPath.get()
因为它是全静态的,所以变量可以在JVM范围内访问每个在这个JVM中运行的代码。
公用事业类
public final class ServletContextRootRealPath {
private static String path;
private ServletContextRootRealPath() {
// don't instantiate utility classes
}
public static void set(String rootRealPath) {
path = rootRealPath;
}
public static String get() {
return path;
}
}
答案 1 :(得分:0)
您可以将值存储在任何类的静态变量中(基本上是用于提供常用实用程序功能的帮助程序类)。稍后您可以在不创建类实例的情况下引用此变量,因为它是静态的,可以在没有实例的情况下访问。