新聞中心
JSP 表達式語言(EL)使得訪問存儲在 JavaBean 中的數(shù)據(jù)變得非常簡單。JSP EL 既可以用來創(chuàng)建算術(shù)表達式也可以用來創(chuàng)建邏輯表達式。在 JSP EL 表達式內(nèi)可以使用整型數(shù),浮點數(shù),字符串,常量 true、false,還有 null。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、鼓樓網(wǎng)站維護、網(wǎng)站推廣。
一個簡單的語法
典型的,當(dāng)您需要在 JSP 標簽中指定一個屬性值時,只需要簡單地使用字符串即可:
JSP EL 允許您指定一個表達式來表示屬性值。一個簡單的表達式語法如下:
${expr}
其中,?expr? 指的是表達式。在 JSP EL 中通用的操作符是?"."?和?"[]"?。這兩個操作符允許您通過內(nèi)嵌的 JSP 對象訪問各種各樣的 ?JavaBean? 屬性。
舉例來說,上面的??標簽可以使用表達式語言改寫成如下形式:
當(dāng) JSP 編譯器在屬性中見到"?${}?"格式后,它會產(chǎn)生代碼來計算這個表達式,并且產(chǎn)生一個替代品來代替表達式的值。
您也可以在標簽的模板文本中使用表達式語言。比如??標簽簡單地將其主體中的文本插入到 JSP 輸出中:
Hello JSP!
現(xiàn)在,在??標簽主體中使用表達式,就像這樣:
Box Perimeter is: ${2*box.width + 2*box.height}
在EL表達式中可以使用圓括號來組織子表達式。比如?${(1 + 2) * 3}?等于9,但是?${1 + (2 * 3)} ?等于7。
想要停用對 EL 表達式的評估的話,需要使用 ?page ?指令將 ?isELIgnored? 屬性值設(shè)為? true?:
<%@ page isELIgnored ="true|false" %>
這樣,EL 表達式就會被忽略。若設(shè)為?false?,則容器將會計算 EL 表達式。
EL中的基礎(chǔ)操作符
EL表達式支持大部分Java所提供的算術(shù)和邏輯操作符:
| 操作符 | 描述 |
|---|---|
| . | 訪問一個?Bean?屬性或者一個映射條目 |
| [] | 訪問一個數(shù)組或者鏈表的元素 |
| ( ) | 組織一個子表達式以改變優(yōu)先級 |
| + | 加 |
| - | 減或負 |
| * | 乘 |
| / or div | 除 |
| % or mod | 取模 |
| == or eq | 測試是否相等 |
| != or ne | 測試是否不等 |
| < or lt | 測試是否小于 |
| > or gt | 測試是否大于 |
| <= or le | 測試是否小于等于 |
| >= or ge | 測試是否大于等于 |
| && or and | 測試邏輯與 |
| || or or | 測試邏輯或 |
| ! or not | 測試取反 |
| empty | 測試是否空值 |
JSP EL中的函數(shù)
JSP EL 允許您在表達式中使用函數(shù)。這些函數(shù)必須被定義在自定義標簽庫中。函數(shù)的使用語法如下:
${ns:func(param1, param2, ...)}
ns 指的是命名空間(namespace),?func?指的是函數(shù)的名稱,?param1?指的是第一個參數(shù),?param2? 指的是第二個參數(shù),以此類推。比如,有函數(shù)?fn:length?,在 JSTL 庫中定義,可以像下面這樣來獲取一個字符串的長度:
${fn:length("Get my length")}
要使用任何標簽庫中的函數(shù),您需要將這些庫安裝在服務(wù)器中,然后使用??標簽在 JSP 文件中包含這些庫。
JSP EL隱含對象
JSP EL支持下表列出的隱含對象:
| 隱含對象 | 描述 |
|---|---|
| pageScope | page 作用域 |
| requestScope | request 作用域 |
| sessionScope | session 作用域 |
| applicationScope | application 作用域 |
| param | Request 對象的參數(shù),字符串 |
| paramValues | Request對象的參數(shù),字符串集合 |
| header | HTTP 信息頭,字符串 |
| headerValues | HTTP 信息頭,字符串集合 |
| initParam | 上下文初始化參數(shù) |
| cookie | Cookie值 |
| pageContext | 當(dāng)前頁面的pageContext |
您可以在表達式中使用這些對象,就像使用變量一樣。接下來會給出幾個例子來更好的理解這個概念。
pageContext對象
? pageContext? 對象是 JSP 中 ?pageContext? 對象的引用。通過 ?pageContext? 對象,您可以訪問 ?request? 對象。比如,訪問 ?request? 對象傳入的查詢字符串,就像這樣:
${pageContext.request.queryString}
Scope對象
? pageScope?,?requestScope?,?sessionScope?,?applicationScope? 變量用來訪問存儲在各個作用域?qū)哟蔚淖兞俊?/p>
舉例來說,如果您需要顯式訪問在 ?applicationScope? 層的 ?box ?變量,可以這樣來訪問: ?applicationScope.box?。
param和paramValues對象
? param? 和 ?paramValues? 對象用來訪問參數(shù)值,通過使用 ?request.getParameter? 方法和? request.getParameterValues? 方法。
舉例來說,訪問一個名為? order? 的參數(shù),可以這樣使用表達式:?${param.order}?,或者?${param["order"]}?。
接下來的例子表明了如何訪問 request 中的? username? 參數(shù):
<%@ page import="java.io.*,java.util.*" %>
<% String title = "Accessing Request Param"; %>
<% out.print(title); %>
<% out.print(title); %>
${param["username"]}
param 對象返回單一的字符串,而 ?paramValues ?對象則返回一個字符串?dāng)?shù)組。
header和headerValues對象
? header? 和 ?headerValues ?對象用來訪問信息頭,通過使用 ?request.getHeader? 方法和?request.getHeaders? 方法。
舉例來說,要訪問一個名為 ?user-agent? 的信息頭,可以這樣使用表達式:?${header.user-agent}?,或者 ?${header["user-agent"]}?。
接下來的例子表明了如何訪問 ?user-agent? 信息頭:
<%@ page import="java.io.*,java.util.*" %>
<% String title = "User Agent Example"; %>
<% out.print(title); %>
<% out.print(title); %>
${header["user-agent"]}
運行結(jié)果如下:
header對象返回單一值,而headerValues則返回一個字符串?dāng)?shù)組。
新聞標題:創(chuàng)新互聯(lián)JSP教程:JSP表達式語言
文章位置:http://www.5511xx.com/article/dhooggh.html


咨詢
建站咨詢
