JSTL 和 EL
EL表示式 Expression Language
語法${作用域中的值}
使用EL表示式時,需要在page標籤中寫上isELIgnored="false",否則EL表示式不生效。
EL表示式在底層定址物件時會加上get並將屬性名首字母大寫。而且很多java程式在底層定址物件時都是找到物件的get,set方法並非去找改物件。
EL表示式查詢範圍:從小範圍到大範圍,如果不同作用域有同名的變數暱稱,以最小的作用域為準。
EL表示式獲取普通屬性
1.向作用域中新增一個普通屬性,
<% request.setAttribute("uname","李明"); %>
2.使用EL表示式獲取作用域的key。
${uname}
EL表示式獲取物件屬性
1.建立一個物件,將物件寫入作用域中。
<%
User user=new User(); user.setName("豬豬俠"); user.setAge(16);
%>
2.使用EL表示式獲取作用域的key.物件的屬性。不需要加get。
${user.name}
EL表示式獲取list和map集合
1.建立集合,放入作用域中,
<%
User user=newUser(); user.setName("豬豬俠"); user.setAge(16); User user2=new User(); user2.setName("豬豬俠2"); user2.setAge(19); List<User> list=new ArrayList<User>(); list.add(user); list.add(user2); Map<String,User> map=new HashMap<String, User>(); map.put("一號",user); map.put("二號",user2); request.setAttribute("list",list); request.setAttribute("map",map);
%>
2..EL表示式獲取集合屬性時為:key[下標].屬性名
${ list[1].name} <br> ${map["二號"].name}
JSTL Java Standard Tag Library (java標準標籤庫)
使用JSTL需要兩個jar包和標籤庫描述符檔案(.tld檔案),在java高版本無需引jar,在低版本和非eclipse和myeclipse外的一些軟體需要手動引入jar包。
需要使用taglib標籤:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
JSTL可以和EL表示式混合使用
通用標籤
set:用於設定指定範圍的變數值
<c:set var="變數名" valuue="變數值" scope="作用域名"></c:set>
<c:set var="name" value="二傻" scope="page"></c:set>
${name}
out:計算表示式並將結果輸出顯示
<c:out value="需要輸出的值"></c:out>
如果value寫的是set標籤中的var,他會看成是四個字母輸出,所以需要使用到EL表示式進行混合輸出。
<c:set var="name" value="二傻" scope="page"></c:set>
<c:out value="${name}"></c:out>
out輸出超連結:
out輸出超連結需要用到 escapeXml。
escapeXml有四個取值 true(不對超連結進行轉換轉義,原模原樣輸出) 預設值(不對超連結進行轉換轉義,原模原樣輸出) Y(對超連結進行轉換轉義,解析成一個可以點的超連結) false(對超連結進行轉換轉義,解析成一個可以點的超連結)
<c:out escapeXml="false" value="<a href='http://www.baidu.com'>百度</a>"></c:out>
使用true或預設值的結果:
使用Y或false的結果:
、