簡體   English   中英

如何從JSP頁面訪問環境變量

[英]How to access environment variables from JSP page

如何從JSP頁面訪問環境變量? 隱式對象之一是否可以訪問它們? 我找不到解決此特定問題的示例。 理想情況下,我正在尋找類似的東西:

<c:set var="where" value="${myEnvironment.machineName}">

您可以在服務器啟動時使用ServletContextListener讀取屬性文件,並將其存儲為應用程序范圍的屬性,以從應用程序中的任何位置訪問它。

遵循的步驟:

.properties:

machineName=xyz

web.xml:

<listener>
    <listener-class>com.x.y.z.AppServletContextListener</listener-class>
</listener>

AppServletContextListener.java:

public class AppServletContextListener implements ServletContextListener {

    private static Properties properties = new Properties();

    static {
        // load properties file
        try {
            // absolute path on server outside the war 
            // where properties files are stored

            String absolutePath = ..; 
            File file = new File(absolutePath);
            properties.load(new FileInputStream(file));
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {

    }

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        servletContextEvent.getServletContext().
                                    setAttribute("myEnvironment", properties);
    }
}

JSP:

然后,您可以將其視為EL中的Map。

${myEnvironment['machineName']}

要么

${myEnvironment.machineName}

閱讀有關JSTL Core c:set標簽的更多信息

<c:set>標記是setProperty操作的JSTL友好版本。 該標記很有用,因為它計算一個表達式並使用結果設置JavaBeanjava.util.Map對象的值。

<c:set>標記具有以下屬性:

在此處輸入圖片說明

如果指定了target,則還必須指定屬性。

此處了解更多信息


如果您要查找示例代碼,請在此處找到。 請在以下帖子中找到它。 它可能會幫助您。


其他示波器上的更多示例。

    <%-- Set scoped variables --%>
    <c:set var="para" value="${41+1}" scope="page" />
    <c:set var="para" value="${41+1}" scope="request" />
    <c:set var="para" value="${41+1}" scope="session" />
    <c:set var="para" value="${41+1}" scope="application" />

    <%-- Print the values --%>
    <c:out value="${pageScope.para}" />
    <c:out value="${requestScope.para}" />
    <c:out value="${sessionScope.para}" />
    <c:out value="${applicationScope.para}" />

在你的情況,你已經設置的屬性where默認page范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM