標籤:對象 javabean jsp bean el
JavaBean在JSP中的局限
擷取JavaBean屬性必須要執行個體化
強制類型轉化
<% Employee employee = (Employee)request.getAttribute("employee"); Computer comp = employee.getComputer(); String manufacturer = comp.getManufacturer();%>
如果頁面編寫出現邏輯錯誤,將會導致代碼執行錯誤,並且JSP頁面編譯頁面時也會產生錯誤
解決辦法
使用EL運算式簡化
什麼是EL
EL即Expression Language(運算式語言)
EL的功能
替代JSP頁面中的複雜代碼
EL的文法
${ EL exprission }
${ bean.name } 或 ${ bean[‘name‘] }
${bean.name}實質是調用bean的getName()方法
註: 1 el通過.和[]來存取資料。 例如${applicationScope.user.userName}或者${applicationScope.user["userName"]}
2 如果存取的屬性名稱包含一些特殊符號,如"."或者是"-"等非字母或數字記號必須用[]
3 applicationScope.user["user-Name"]
4 如果使用變數來傳入,那麼也只能使用[].例如
<%String data="username";%>
${applicationScope.user[data]}
5 當然有四個隱含對象:applicationScope,sessionScope,requestScope,pageScope.與application ,session,request,pageContext相對應.例如applicationScope用來擷取application範圍的屬性值
自動轉換類型
EL得到某個資料時可以自動轉換類型
對於類型的限制更加寬鬆
使用簡單
相比較在JSP中嵌入Java代碼,EL應用更簡單
EL文法
以“${”作為開始,以“}”作為結束
直接使用變數名擷取值$
${ username }
變數屬性範圍名稱
屬性範圍 EL中的名稱
page pageScope,例如${pageScope.username},表示在page範圍內尋找username變數,找不到返回Null
request requstScope
session sessionScope
application applicationScope
EL運算子
運算子”[ ]”
運算子”.”
作用
擷取對象屬性
擷取對象集合中的資料
在Session中儲存了一個(list)集合users
簡單應用:輸出姓名顯示
<%
Map names = new HashMap();
names.put("one","LiYang");
names.put("two","WangHua");
request.setAttribute("names",names);
%>
姓名:${names.one}<br/>
姓名:${names["two"] }<br/>
EL隱式對象介紹
對象名稱 說 明
pageScope 返回頁面範圍的變數名,這些名稱已映射至相應的值
requestScope 返回請求範圍的變數名,這些名稱已映射至相應的值
sessionScope 返回會話範圍的變數名,這些名稱已映射至相應的值
applicationScope 返回應用範圍內的變數,並將變數名映射至相應的值
param 返回用戶端的請求參數的字串值
paramValues 返回映射至用戶端的請求參數的一組值
pageContext 提供對使用者請求和頁面資訊的訪問
JSP頁面中EL運算式語言的使用詳解