Java知識整理(二十一)之EL表達式

EL表達式:簡單的計算規則,用於給JSP標籤屬性賦值,也可以直接用來輸出(JSP中嵌套Java代碼不利於維護)
作用:
訪問Bean屬性(pageContext,request,session,application):${對象名.屬性名} ${對象名["屬性名"]} ${user.array[1]}:user中數組array第2個元素
request.setAttribute("userAge","age");--->  ${user[userAge]} 相當於 ${user["age"]}
取值時綁定名寫錯(找不到返回null)或沒有賦值(找不到返回null),實際上輸出空白(屬性名不能寫錯,否則報錯)
${user.name}  相當於  <%  User user = (User)request.getAttribute("user");  out.print(user.getName());   %>
指定查找範圍:如在session中查找:${sessionScope.user.name}  要查找的Bean屬性加Scope
輸出簡單運算結果:"+","-","*","/","%";"+"號只能求和不能連接字符串;"&&","||","!",">",">=","<","<=","==","!=",
empty:${empty null}返回true;空字符串,空集合,值爲null,找不到對應的值;返回結果true;
獲取請求參數:${param.username}等價於request.getParameter("username");${paramValues.city}等價於request.getParameterValues("city");
JSTL(JSP Standard Tag Library):JSP標準標籤庫
使用JSTL:
1.將對應jar包放到WEB-INF/lib目錄下
2.使用taglib指令導入要使用的JSP標籤<% @taglib uri="http://java.sun.com/jsp/jst1/core" prefix="c" %> uri:JSP標籤的命名空間 prefix:命名空間的前綴
if標籤:<c:if test="${emp.gender}=='m'" var="rs" scope="request">男</c:if> //rs爲記錄test結果的臨時變量
當test屬性值爲true時,執行標籤體的內容.test屬性可以使用EL表達式
var屬性:指定一個綁定名稱;scope屬性:指定綁定的範圍(page,request,session,application);var和scope要配合使用
choose標籤:<c:choose>
  <c:when test=""></c:when>
  ......
  <c:otherwise></c:otherwise>
  </c:choose>
forEach標籤<c:forEach var="emp" items="${emps}" varStatus="s">
  ${emp.name}
  ${emp.gender}
  ${s.count/index}
  </c:forEach>
items屬性:指定要便利的集合,一般使用EL表達式來複制
var屬性:指定一個綁定的名稱,容器每次從集合中取一個對象,然後綁定到pageContext對象上
varStatus屬性:指定一個綁定名稱,綁定值是一個由容器創建的對象,該對象封裝了當前迭代的狀態
index返回正在被迭代的對象下標(從0開始),coun返回第幾次迭代(從1開始)
開發自定義標籤:參考jstl-1.2.jar的META-INF的c.tld
1.編寫Java類,繼承SimpleTagSupport類
2.在doTag方法中添加處理邏輯
3.配置標籤說明文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章