2011-03-08 58 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