2011-03-08 51 views
2

我想要在jsp文件中获取catalina.bat中定义的JAVA_OPTS值。有人可以告诉我该怎么做。如何获得jsp中的JAVA_OPTS值

例如:在catalina.bat中我JAVA_OPTS定义是像

JAVA_OPS = -DMyProjectHome = d:\项目

我想有MyProjectHome的在运行时JSP文件,所以我的价值试图做的是$ {MyProjectHome}但它没有做任何事情。

还是有办法,我可以在

定义JAVA_OPTS值请帮我实现我的功能。

谢谢。

+0

尝试System.getenv( “MyProjectHome”) – 2011-03-08 15:38:46

回答

3

通过-Dfoo=bar传递给JVM的内容称为系统属性。您可以使用System.getProperty()来获得它们的价值。虽然没有标准标签或JSP EL语法,但您必须使用scriptlet或实现自定义标签。

1

这些是Java系统属性。您可以通过Java函数访问它

System.getProperty("MyProjectHome"); 

在JSP中可能有更好的方法来完成它,但这将起作用。

2

将它包装在一个扩展了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} 
+0

这可能是更好的扩展AbstractMap,而不是HashMap中。甚至只是实施地图。如果你扩展了HashMap,你将获得HashMap成员的所有内存空间(比如它的表数组),这是你永远不需要使用的。不过,您必须实施一些额外的方法(但可以安全地将UnsupportedOperations引入其中)。 – megaflop 2014-05-29 15:36:16