JSP中初始化參數的設定和擷取方法
Get Init Parameter in JSP Page
By Reawer 2008-8-13
InitParamter存取方法一(內建對象):
一、By ServletConfig :
Parameter1: {config.getInitParameter("p1") }
Parameter2: {config.getInitParameter("p2") }
Parameter3: {config.getInitParameter("p3") }
config遍曆所有Parameter:
二、By ServletContext :
Parameter1: {application.getInitParameter("p1") }
Parameter2: {application.getInitParameter("p2") }
Parameter3: {application.getInitParameter("p3") }
application遍曆所有Parameter:
InitParamter存取方法二(JSF):
InitParamter存取方法三(EL)--相當於application對象訪問:
= ${initParam.p1}
= ${initParam.p2}
= ${initParam.p3}
JSP中的initParameter使用方法及體會
1. 使用JSP對應的Servlet初始化參數
給JSP頁面提供初始化參數在三個方面不同於給servlet提供初始化參數。
1)需要使用使用jsp-file元素代替servlet-class。因此,WEB-INF/web.xml檔案的servlet元素如下所示:
<servlet>
<description>initParameter</description>
<display-name>initParameterJsp</display-name>
<servlet-name>initParameterJsp</servlet-name>
<jsp-file>/jsp/initParameter.jsp</jsp-file>
<init-param>
<description>parameter Test</description>
<param-name>paraName</param-name>
<param-value>paraValue</param-value>
</init-param>
</servlet>
2) 幾乎總是分配一個明確的URL模式。對servlet,一般相應地使用以http://localhost:8080/webApp/servlet/ 開始的預設URL。
只需記住,使用註冊名而不是原名稱即可。這對於JSP頁面在技術上也是合法的。例如,可用URL http://localhost:8080/webApp/servlet/PageName
訪問*.jsp的對初始化參數具有訪問權的版本。但在用於JSP頁面時,我們經常似乎不喜歡應用常規的servlet的URL。
因此,好的辦法是使用url-pattern將JSP頁面的原URL與註冊的 servlet名相關聯。
這樣,客戶機可使用JSP頁面的指定名稱,進行訪問。例如,給本JSP的servlet定義,可使用下面的 servlet-mapping定義:
<servlet-mapping>
<servlet-name>initParameterJsp</servlet-name>
<!-- 關聯URL模式.此處若不寫成:/jsp/initParameter.jsp則在使用URL(/jsp/initParameter.jsp)訪問時無法取到Servlet中的initParamter值 -->
<url-pattern>/jsp/initParameter</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>initParameterJsp</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3)JSP頁使用jspInit而不是init。自動從JSP頁面建立的servlet或許已經使用了inti方法。
一般如上在url-pattern中未寫成/jsp/initParameter.jsp形式,則http://localhost:8080/webApp/*.jsp
形式的URL將啟用此頁面的不具有初始化參數訪問權的版本,從而將對參數paraName失去訪問權,如本頁中使用config內建對象訪問:
config.getInitParameter("paraName") ---- 得到結果: null。
但是, web.xml檔案中已為本JSP頁分配了一個註冊名,該註冊名已與URL模式/jsp/initParameter相關聯。這時使用如下形式訪問:
http://localhost:8080/webApp/jsp/initParameter
即則可得到參數:
config.getInitParameter("paraName"); //---- 得到結果: paraValue。
2. 使用應用範圍內(項目)的初始化參數
一般,對單個地servlet或JSP頁面分配初始化參數。指定的servlet或JSP頁面利用ServletConfig的getInitParameter方法讀取這些參數。
但是,在某些情形下,希望設定可由任意servlet或JSP頁面藉助ServletContext的getInitParameter方法讀取的系統範圍內的初始化參數。
可利用context-param元素宣告這些系統範圍內的初始化值。
1)context-param元素應該包含param-name、param-value以及可選的description子項目,如下所示:
<context-param>
<description>這是一個樣本參數的描述資訊</description>
<!-- 參數名 -->
<param-name>appParaName</param-name>
<!-- 參數值 -->
<param-value>appParaValue</param-value>
</context-param>
2)存取方法,使用內建的application對象:
String value = application.getInitParameter("參數名");//---- 得到結果: appParaValue。