JSTL入門 表示式語言 二

2021-05-28 11:12:56 字數 3475 閱讀 9544

清單 3. 說明 el 表示式定界符的 jstl 操作

此外,您可以將多個表示式與靜態文字組合在一起以通過字串並置來構造動態屬性值,如清單 4 所示。單獨的表示式由識別符號、訪問器、文字和運算子組成。識別符號用來引用儲存在資料中心中的資料物件。el 有 11 個保留識別符號,對應於 11 個 el 隱式物件。假定所有其它識別符號都引用限制了作用域的變數。訪問器用來檢索物件的特性或集合的元素。文字表示固定的值 ― 數字、字元、字串、布林型或空值。運算子允許對資料和文字進行組合以及比較。

清單 4. 組合靜態文字和多個 el 表示式以指定動態屬性值

限制了作用域的變數

jsp api 通過操作允許從 jsp 容器內的四個不同作用域中儲存和檢索資料。jstl 通過提供用於指定和除去這些作用域中的物件的附加操作來擴充套件這一能力。此外,el 提供將這些物件作為限制了作用域的變數進行檢索的內建支援。特別地,任何出現在 el 表示式中但不對應於任何 el 隱式物件的識別符號,都被自動假定為引用儲存在四個 jsp 作用域的其中某個中的物件,這四個作用域是:

您可能還記得,只有在為特定請求處理頁面期間才能檢索儲存在該頁面作用域中的物件。如果物件是儲存在請求作用域中的,可以在處理所有參與處理某請求的頁面期間檢索這些物件(譬如在對某個請求的處理中遇到了乙個或多個操作)。如果物件是儲存在會話作用域中的,則在與 web 應用程式的互動式會話期間,可以由使用者訪問的任何頁面檢索它(即,直到與該使用者互動相關聯的httpsession物件無效為止)。可以由任何使用者從任何頁面訪問儲存在應用程式作用域中的物件,直到解除安裝 web 應用程式本身為止(通常是由於關閉 jsp 容器所致)。

通過將字串對映為期望作用域中的物件來將物件儲存到該作用域。然後,就可以通過提供相同字串來從該作用域檢索該物件。在作用域的對映中查詢字串,並返回被對映的物件。在 servlet api 中,將此類物件稱為相應作用域的屬性。但是,在 el 的上下文中,也將與屬性相關聯的字串看作變數的名稱,該變數通過屬性對映的方式獲得特定的值。

在 el 中,與隱式物件無關聯的識別符號被認為是儲存在四個 jsp 作用域中的名稱物件。首先對頁面作用域檢查是否存在這樣的識別符號,其次對請求作用域、然後對會話作用域、最後對應用程式作用域依次進行這樣的檢查,然後測試該識別符號的名稱是否與儲存在該作用域中的某個物件的名稱匹配。第乙個這樣的匹配作為 el 識別符號的值被返回。通過這種方法,可以將 el 識別符號看作引用限制了作用域的變數。

從更技術的方面來說,沒有對映到隱式物件的識別符號是用pagecontext例項的findattribute()方法求值的,該例項表示對頁面的處理,在該頁面上,當前正在處理用於請求的表示式。識別符號的名稱作為引數傳遞給這個方法,然後該方法依次在四個作用域中搜尋具有相同名稱的屬性。並將所找到的第乙個匹配項作為findattribute()方法的值返回。如果未在這四個作用域中找到這樣的屬性,則返回null

最終,限制了作用域的變數是四個 jsp 作用域的屬性,這些屬性具有可以用作 el 識別符號的名稱。只要對限制了作用域的變數賦予由字母數字組成的名稱,就可以通過 jsp 中提供的用於設定屬性的任何機制來建立它們。這包括內建的操作,以及由 servlet api 中的幾個類定義的setattribute()方法。此外,四個 jstl 庫中定義的許多定製標記本身就能夠設定作為限制了作用域的變數使用的屬性值。

隱式物件

表 1 中列出了 11 個 el 隱式物件的識別符號。不要將這些物件與 jsp 隱式物件(一共只有九個)混淆,其中只有乙個物件是它們所共有的。

表 1. el 隱式物件

類別識別符號描述

jsppagecontextpagecontext例項對應於當前頁面的處理

作用域pagescope與頁面作用域屬性的名稱和值相關聯的map

requestscope與請求作用域屬性的名稱和值相關聯的map

sessionscope與會話作用域屬性的名稱和值相關聯的map

與應用程式作用域屬性的名稱和值相關聯的map

請求引數

param按名稱儲存請求引數的主要值的map

paramvalues將請求引數的所有值作為string陣列儲存的map

請求頭header按名稱儲存請求頭主要值的map

headervalues將請求頭的所有值作為string陣列儲存的map

cookie

cookie按名稱儲存請求附帶的 cookie 的map

初始化引數

initparam按名稱儲存 web 應用程式上下文初始化引數的map

儘管 jsp 和 el 隱式物件中只有乙個公共物件(pagecontext),但通過 el 也可以訪問其它 jsp 隱式物件。原因是pagecontext擁有訪問所有其它八個 jsp 隱式物件的特性。實際上,這是將它包括在 el 隱式物件中的主要理由。

其餘所有 el 隱式物件都是對映,可以用來查詢對應於名稱的物件。前四個對映表示先前討論的各種屬性作用域。可以用它們來查詢特定作用域中的識別符號,而不用依賴於 el 在預設情況下使用的順序查詢過程。

接下來的四個對映用來獲取請求引數和請求頭的值。因為 http 協議允許請求引數和請求頭具有多個值,所以它們各有一對對映。每對中的第乙個對映返回請求引數或頭的主要值,通常是恰巧在實際請求中首先指定的那個值。每對中第二個對映允許檢索引數或頭的所有值。這些對映中的鍵是引數或頭的名稱,但這些值是string物件的陣列,其中的每個元素都是單一引數值或頭值。

cookie 隱式物件提供了對由請求設定的 cookie 名稱的訪問。這個物件將所有與請求相關聯的 cookie 名稱對映到表示那些 cookie 特性的cookie物件。

最後乙個 el 隱式物件initparam是乙個對映,它儲存與 web 應用程式相關聯的所有上下文的初始化引數的名稱和值。初始化引數是通過web.xml部署描述符檔案指定的,該檔案位於應用程式的web-inf目錄中。

EL和JSTL表示式

一 el表示式 寫法 1 el的取值 1 對一般物件來說,如果取物件裡的屬性,那麼必須有響應屬性的get方法才能取到 2 對於map等鍵值對儲存的物件來說,直接 可取到map1中k1對應的值 3 對於陣列來說,可以通過 取到陣列1中下標為i的元素 2 el的param屬性 相當於request.ge...

EL表示式和JSTL

表示式語言簡介 el為表示式語言,jsp2.0規範中的一部分。el提供了一些識別符號 訪問器和運算子,用來讀取 駐留在jsp容器中的資料。el的語法 el可用於jsp頁面中所有html和jsp標籤中。el表示式只能使用在除了jsp指令碼 jsp表示式,jsp 片段 的地方 el中的有效表示式 文字常...

el表示式及jstl

el表示式 取值顯示在頁面中 取值的地方 頁面物件的屬性 pagecontext.setattribute key,value 取值 請求物件的屬性 request.setattribute key,value 取值 會話物件的屬性 session.setattribute key,value 取值...