我想要在jsp文件中获取catalina.bat中定义的JAVA_OPTS值。有人可以告诉我该怎么做。如何获得jsp中的JAVA_OPTS值
例如:在catalina.bat中我JAVA_OPTS定义是像
JAVA_OPS = -DMyProjectHome = d:\项目
我想有MyProjectHome的在运行时JSP文件,所以我的价值试图做的是$ {MyProjectHome}但它没有做任何事情。
还是有办法,我可以在
定义JAVA_OPTS值请帮我实现我的功能。
谢谢。
我想要在jsp文件中获取catalina.bat中定义的JAVA_OPTS值。有人可以告诉我该怎么做。如何获得jsp中的JAVA_OPTS值
例如:在catalina.bat中我JAVA_OPTS定义是像
JAVA_OPS = -DMyProjectHome = d:\项目
我想有MyProjectHome的在运行时JSP文件,所以我的价值试图做的是$ {MyProjectHome}但它没有做任何事情。
还是有办法,我可以在
定义JAVA_OPTS值请帮我实现我的功能。
谢谢。
通过-Dfoo=bar
传递给JVM的内容称为系统属性。您可以使用System.getProperty()
来获得它们的价值。虽然没有标准标签或JSP EL语法,但您必须使用scriptlet或实现自定义标签。
这些是Java系统属性。您可以通过Java函数访问它
System.getProperty("MyProjectHome");
在JSP中可能有更好的方法来完成它,但这将起作用。
将它包装在一个扩展了Map
的类中。
public class SystemProperties extends HashMap<String, String> {
@Override
public String get(Object name) {
return System.getProperty(name != null ? name.toString() : null);
}
}
在JSP中声明如下。
<jsp:useBean id="systemProperties" class="com.example.SystemProperties" scope="application" />
然后,您可以在EL中将其视为Map
。
${systemProperties['MyProjectHome']}
或
${systemProperties.MyProjectHome}
这可能是更好的扩展AbstractMap,而不是HashMap中。甚至只是实施地图。如果你扩展了HashMap,你将获得HashMap成员的所有内存空间(比如它的表数组),这是你永远不需要使用的。不过,您必须实施一些额外的方法(但可以安全地将UnsupportedOperations引入其中)。 – megaflop 2014-05-29 15:36:16
尝试System.getenv( “MyProjectHome”) – 2011-03-08 15:38:46