EL表示式和JSTL表示式.
一、EL表示式.
語法: ${ 表示式 } 目的: 替代jsp頁面中輸出指令碼的編寫.
1.作用一: 獲取域中資料.
四大域物件: pageContext -> request -> session -> application 1.獲取簡單資料.${ 域名.屬性名 } 域物件Scope.屬性名. 例: requestScope.屬性名. 簡寫方式: ${ 屬性名 } 四個域物件中,從小到大查詢. 簡寫使用前提: 屬性名不能重複. 2.獲取複雜資料. 獲取陣列資料: ${ 陣列名[index] } 獲取集合資料: ${ 屬性名[index] } 獲取map資料: ${ map集合名.key名字 } 3.獲取javaBean屬性. ${ bean名字.bean屬性名 } javaBean屬性: geter/seter的方法去掉字首 , 留下的欄位名 . 並不是獲取欄位名.
獲取javaBean屬性案例:
jsp使用:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>獲取域中javaBean資料</title> </head> <body> <% // 向域中新增javaBean User user = new User(1,"tom"); user.setSalary(10000); request.setAttribute("user",user); %> <%-- 不看欄位名 , 只看get/set方法去掉字首的欄位名 --%> ${user.id} // 並沒有欄位名. ${user.name} ${user.year} // 並沒有year欄位名,但有getYear方法. </body> </html>
javaBean程式碼:
public class User { private int fdafdjaf; private String name; private double salary; public double getYear(){ return salary*12; } public User(int id, String name) { this.fdafdjaf = id; this.name = name;} public int getId() { return fdafdjaf; } public void setId(int id) { this.fdafdjaf = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } }
2.作用二: 支援運算.
+ 不能用作拼接字串. 支援三元運算子. 支援判空運算: empty 屬性名. 空: 物件為null , 集合長度為0 , 空字串.
3.作用三: 獲取內建物件.
pageContext物件: pageContext.getRequest().getContextPath(); 如果多次使用:可以在最上面新增一行,使用ctx來獲取. <c:set var=“ctx” value="${pageContext.request.contextPath"}
二、JSTL核心標籤庫(core)的使用.
JSTL(JSP standard Tag Library): JSP標準標籤庫.
jstl: 可以嵌入在jsp頁面中使用標籤的形式完成業務邏輯等功能. 核心庫: core. 標籤庫的URI: http://java.sun.com/jsp/jstl/core
1.需要先匯入jar包.
jar包: javax.servlet.jsp.jstl.jar jstl‐impl.jar
2.頁面中匯入要使用的jstl標籤庫.
3.常用的jstl標籤.
1.<c:if>標籤. 作用: 判斷java程式碼. 屬性: test=“條件表示式”. 判斷表示式是否成立. var=“aaa”, 儲存test屬性的結果.
2.<c:forEach>標籤. 作用: 迴圈java程式碼. 屬性: begin: 迴圈開始索引, end: 迴圈結束索引. items: 要迴圈的物件.(被遍歷的集合) var: 被迴圈物件中的元素. varStatus: 正在被遍歷的物件的一些狀態屬性資訊(count-序號)
forEach遍歷User物件案例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jstl的forEach的使用</title>
</head>
<body>
<%
//有一個list集合 集合放置是user物件
ArrayList<Object> users = new ArrayList<>();
users.add(new User(1,"tom"));
users.add(new User(102,"jack"));
users.add(new User(333,"rose"));
request.setAttribute("user",users);
%>
使用jstl遍歷user集合<br>
<c:forEach items="${user}" var="n" varStatus="aaa">
${aaa.count} --> ${n.id} --> ${n.name}
</c:forEach>
</body>
</html>