1. 程式人生 > >EL表示式和JSTL表示式.

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>