EL即ExPRession Language,主要的任務(wù)是幫助開(kāi)發(fā)者簡(jiǎn)化獲取域?qū)傩浴?/p>
但是一般情況下需要使用EL和JSTL結(jié)合使用。
語(yǔ)法:
${
// 隱含對(duì)象|直接寫域中的屬性
}
? 算術(shù)運(yùn)算<!-- 算術(shù)運(yùn)算 --> 20+10 = ${ 20+10 } <br/> 20-10 = ${ 20-10 } <br/> 20*10 = ${ 20*10 } <br/> 20/10 = ${ 20/10 } <br/> 20%10 = ${ 20%10 } <br/> ? 比較運(yùn)算 <!-- 比較運(yùn)算 --> 20 > 10 = ${ 20 > 10 } <br/> 20 < 10 = ${ 20 < 10 } <br/> 20 >= 10 = ${ 20 >= 10 } <br/> 10 == 10 = ${ 10 == 10 } <br/> ${ str == null }? 三目運(yùn)算符${ name != null ? "歡迎":"注冊(cè)"}? 邏輯運(yùn)算${ 12>10 && 1<2 }<br/> 一 獲取域?qū)ο?重點(diǎn))
1. 普通數(shù)據(jù)
<!-- 獲取普通屬性 --> <% request.setAttribute("name","jack"); %> ${name}<br/>以上的代碼在獲取域?qū)傩缘臅r(shí)候沒(méi)有指定給任何的域空間,那么底層一定按照小到大的方式逐一的檢測(cè)的域?qū)傩浴?/p>
pageContext.findAttribute(“”); à 實(shí)現(xiàn)原理
2 獲取數(shù)組屬性
<!-- 獲取數(shù)組屬性 --> <% int [] ins = {1,2,3,4}; request.setAttribute("arrs",ins); %> ${arrs}<br/> ${arrs[2]}<br/> ${arrs["2"]}<br/> ? 該方式不是給數(shù)組用,是個(gè)集合使用。3 List集合
<!-- 獲取數(shù)組屬性 --> <% List<String> list = new ArrayList<String>(); list.add(0,"jiao"); list.add(1,"ning"); list.add(2,"bo"); request.setAttribute("list",list); %> ${list }<br/> ${list[0] }<br/> ${list["0"] }<br/>4 獲取Map屬性
<% LinkedHashMap<String,String> map = new LinkedHashMap<String,String>(); map.put("001","ooooo"); map.put("002","fffff"); map.put("003","uuuuu"); request.setAttribute("map",map); %> ${map }<br/> ${map[001] }<br/> ${map["001"] }<br/> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <c:forEach items="${map}" var="entry"> ${entry.key } = ${entry.value }<br/> </c:forEach>6 Bean操作
<!-- 獲取Map中Bean屬性 --> <% LinkedHashMap<String,Cat> cats = new LinkedHashMap<String,Cat>(); cats.put("001",new Cat("A貓",3,"波斯貓")); cats.put("002",new Cat("B貓",3,"貍貓")); cats.put("003",new Cat("C貓",3,"加菲貓")); request.setAttribute("cats",cats); %> <c:forEach items="${cats}" var="entry"> ${entry.key} = ${entry.value.name } , ${entry.value.age },${entry.value.type }<br/> </c:forEach>7 EL隱含對(duì)象
pageScope
requestScope
sessionScope
applicationScope
如果在獲取域?qū)傩缘臅r(shí)候沒(méi)有指定具體的域,那么逐一的查找比較耗時(shí),因此希望大家在明確域名的時(shí)候一定要指定域名。
pageContext 該對(duì)象可以獲取request對(duì)象
舉例:
<!-- 隱含對(duì)象 --> ${pageContext.request.method }<br/> ${pageContext.request.servletPath }<br/> ${pageContext.request.contextPath }<br/> ${pageContext.request.protocol }<br/>獲取請(qǐng)求參數(shù)paramparamValues舉例:${param.name }<br/>${paramValues.likes[0] }<br/>獲取請(qǐng)求頭信息headerheaderValues舉例:${header["accept"] }<br/>initParam獲取Cookiecookie舉例:${cookie }<br/>${cookie.address }<br/>${cookie.address.name }<br/>${cookie.address.value }<br/>EL和函數(shù)庫(kù)問(wèn)題:在數(shù)據(jù)顯示的時(shí)候經(jīng)常需要調(diào)用一些方法對(duì)需要顯示的數(shù)據(jù)進(jìn)行基本的處理,如:
數(shù)據(jù)過(guò)濾、求子串等操作。那么就需要使用EL表達(dá)式進(jìn)行快速的函數(shù)調(diào)用。
2.1 在WEB-INF中創(chuàng)建一個(gè)myfun.tld文件
<?xml version="1.0" encoding="UTF-8"?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>jnb</short-name> <function> <name>filter</name> <function-class>cn.itcast.utils.HTMLFilter</function-class> <function-signature>java.lang.String filter(java.lang.String)</function-signature> </function></taglib>
2.2 引入函數(shù)庫(kù)
%@taglib uri="/WEB-INF/myfuns.tld" prefix="jnb"%
1.2 使用EL調(diào)用函數(shù)
<td>${jnb:filter(entry.value.info)}</td>
注意:
JSTL總過(guò)有5個(gè)庫(kù),但是由于JSP主要是做數(shù)據(jù)顯示的,因此我們只學(xué)習(xí)核心庫(kù)和函數(shù)庫(kù)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注