1. 程式人生 > >EL與JSTL筆記小結

EL與JSTL筆記小結

EL表示式的使用(5個 問題)
JSTL標籤的使用(5個問題)
什麼是EL,它能做什麼用的?
EL全名為Expression Language在JSP頁面使用
格式${一個表示式}
例子${requestScope.customer.id}
功能:
1.才四個域物件中取出屬性資料顯示


(pageContext.request.session.application)


2.取出請求引數資料顯示


<%
request.setAttribute("person",new Person("xfzhanag",18));
%>
Map<String,Person> map=new HashMap<String,Person>();
map.put("A",new Person("AA",12));
map.put(""B",new Person("BB",13));
map.B.age${requestScope.B.age};
map.B.age${requestScope.['B'].age};


${requestScope.person.name};
${requestScope.person['name']};
List裡面的第二個資料
<%


<%
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("c");
request.setAttribute("List",list);


%>


${requestScope.List[1]};
${requestScope.List['name']};


我的年齡:<requestScope.person.name><br/>
//什麼方便?為什麼有個中括號?
/*
一種情況?
${requestScope['my person'].name};
map.put("my person",new Person("Xxx",12));


*/
EL能進行的運算?
算數運算(+,-, * ,/ ,%)
關係運算(>,<,==,!=)
邏輯運算(&&,||)
empty運算(判斷一個數據是否是空)
(null,空字串,空集合)


${empty name}<br>
${empty list}<br>
${empty person}<br>


三目條件運算
${requestScope.person.age>18 ? '成年' : '未成年' }
${person.age>18 ? '成年' : '未成年' }
<!--不加隱含物件,怎樣找到的呢?
pageScope,requestScope,
sessionScope,applicationScope
從小到大的一個範圍!
-->
<%
request.setAttribute("list",new ArrayList());
request.setAttribute("name","");
request.setAttribute("person","new Pseron("Xxx",19));
%>
隱含物件
PageContextjavax.servlet.ServletContext
PageScopejava.uti.Map
RequestScopejava.util.Map
sessionScopejava.util.Map
applicationScopejava.util.Map
paramjava.util.Map
EL如何獲取物件的內部資料?
獲取的方式
通過點(.)來取資料
通過中括號[]來取資料
物件的型別
一般物件
Map物件
陣列/List/Set
EL的不足在哪?
不能遍歷,邏輯判斷差
JSTL(5個問題)
什麼是JSTL,它能做什麼?
JSTL為jsp stardard tag library在jsp頁面使用
功能:實現資料基本輸入輸出,流程控制,迴圈,國際化等功能
JSTL 前置名稱               URI範例
核心標籤庫     chttp://sun.com/jsp/jstl/corec:out
I18格式標籤庫 fmthttp://sun.com/jsp/jstl/xml


fmt:formDate
SQL標籤庫     sqlhttp://sun.com/jsp/jstl/sqlsql:query
xml標籤庫     xmlhttp://sun.com/jsp/jstl/fmtx:forBach
函式標籤庫     fnhttp://sun.com/jsp/jstl/functionfn:split
為什麼使用JSTL?
在jsp中使用jsp指令碼+jsp表示式也可以做迴圈輸出,太麻煩
EL不能做遍歷工作
JSTL能做這些而且與jsp和html的標籤可以很好的結合
JSTL快速入門
1.匯入JSTL相關的jar包:
jstl.jar
standard.jar


2.在jsp檔案中匯入JSTL的c標籤庫
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" perfix="c" 


%>


3
<%
List<String> list=new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
request.setAttribute("list",list);


%>
<c:forEach items="${requestScope.list}" var="item">
${item}<br/>
</c:forEach>


jstl如何做流程控制?
c:if(一重條件判斷)
c:choose 
c:when


//需求1:如果我的年齡小於18就輸出未成年成(紅色字型)
<c:if test="${person.age<18}">
<font color="red">未成年人</font>
</c:if>


需求2:如果年齡大於60,就輸出’老頭子‘
如果年齡小於18,就輸出"小屁孩"
其他,就輸出"成年人"
<br/>
<c:choose>
<c:when test="${person.age>60}">老頭子


</c:when>
<c:when test="${person.age<18}">小屁孩


</c:when>
<c:otherwise>成年人</c:otherwise>
</c:choose>
jstl如何做遍歷?
<%
Map<String,Person> map=new 


HashMap<String,Person>();
map.put("1",new Person("AA",23));
map.put("2",new Person("BB",23));
map.put("3",new Person("CC",23));
map.put("4",new Person("DD",23));
map.put("5",new Person("EE",23));
map.put("6",new Person("FF",23));
request.setAttribute("personMap",map);
%>
<h3>將資料用表格顯示出來</h3>
<table border="1" style="width:300px">
<tr>
<td>ID</td>
<td>姓名</td>
<td>年齡</td>
</tr>
<c:forEach items="${personMap}" var="item">
<!--${itm.class}-->
<tr>
<td>${item.key}</td>
<td>${item.value.name}</td>
<td>${item.value.age}</td>
</tr>
</table>