1. 程式人生 > >JSTL 和 EL

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=new
User(); 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的結果: