# EL表達式
在之前我們使用 <%=%> 輸出數據,前提是要通過 request.getAttribute() 獲取到對象再輸出,比較麻煩。
在 EL 表達式中,我們可以直接根據名稱輸出對象,使用 `${“在scope中setAttribute的name”}`;
如果是對象類型的,可以直接使用.操作符訪問對象的屬性,但前提是在 JavaBean 中定義 getter,因為標準的 JavaBean 是封裝了屬性的(private),在EL表達式中是通過調用對象的Getter獲取值的;
如果沒有顯式的指定獲取值的 Scope,則 EL 會按照從 page-request-session-appliction 的方式去尋找 name 的值。
在開發過程中,一般不指定scope,這就要求程序在給scope setAttribute的時候定義一定的規則,不要重復了。
**示例:**
* ${pageScope.msg}
* ${requestScope.msg}
* ${sessionScope.msg}
* ${applicationScope.msg}
* ${msg} ${stu.name}
* 集合類型 ${stu[0].name}
* 請求參數通過 ${param.us}
* 使用 `${stu.name == '李四#' ? '1' : '2'} ` 進行簡單的三元表達式輸出
# JSTL
通過 EL 表達式只能解決單個對象的輸出問題,碰到了像集合的遍歷,復雜的判斷條件,就需要使用 JSTL 標簽。
## 如何引入JSTL標簽
1. 導入標準的JSTL標簽庫,將jstl.jar和standard.jar放置到項目構建路徑中(WEB-INF)或者放到Tomcat/lib目錄中。
2. 將tld文件夾放置到WEB-INF目錄下
3. 在web.xml文件中注冊要使用的taglib
~~~
<jsp-config>
<taglib>
<taglib-uri>http://www.ntqingniao.com/core/c</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>
</jsp-config>
~~~
4. 在要使用標簽的JSP頁面導入tld
`<%@ taglib prefix="c" uri="http://www.ntqingniao.com/core/c"%>`
## 使用JSTL標簽
**判斷標簽<c:if>**
使用<c:if>執行判斷,如果條件成立,則執行標簽體內部的內容
語法:
~~~
<c:if test=”判斷條件 EL表達式”></c:if>
<c:if test="${msg == 'no' }">
nnnn
</c:if>
<c:if test="${msg != 'no' }">
yyyy
</c:if>
~~~
> c:if 沒有所謂的 else 一說,可以使用 == 和 != 進行邏輯判斷
**迭代輸出標簽<c:forEach>**
用于迭代輸出集合變量的數據
<c:forEach>標簽具有以下一些屬性
* var:迭代參數的名稱。在迭代體中可以使用的變量的名稱,用來表示每一個迭代變量。類型為String。
* items:要進行迭代的集合。對于它所支持的類型將在下面進行講解。
* varStatus:迭代變量的名稱,用來表示迭代的狀態,可以訪問到迭代自身的信息。
* begin:如果指定了items,那么迭代就從items[begin]開始進行迭代;如果沒有指定items,那么就從begin開始迭代。它的類型為整數。
* end:如果指定了items,那么就在items[end]結束迭代;如果沒有指定items,那么就在end結束迭代。它的類型也為整數。
* step:迭代的步長。
~~~
<c:forEach items="${stus}" var="stu1" varStatus="status">
<tr>
<td>${status.count}</td>
<td>${stu1.id}</td>
<td>${stu1.name}</td>
<td>${stu1.code}</td>
</tr>
</c:forEach>
~~~
> JSTL標簽一般都是和EL表達式結合起來使用的。
- 我們在做什么?
- 為什么是內存?
- 我們實際上在做什么
- HTML基礎
- Web原理和HTML簡介
- Web原理
- HTML概念
- HTML標簽
- 標簽
- HTML固定基本結構
- 第一個HTML頁面
- 工具的使用
- 標題
- <hr>和<p>標簽
- 路徑概念
- 超級鏈接
- 列表
- 表格
- 表單的設計與使用
- 表單域的原理
- 文本框和密碼框
- 單選框和復選框
- 下拉列表框
- 多行文本和上傳
- 提交按鈕和重置按鈕
- 為CODING COFFEE加入在線購買頁
- HTML5
- 定位服務
- CSS
- CSS的基礎使用
- CSS簡介
- CSS樣式規則和加載方式
- 選擇器
- 偽類
- CSS優先級和層疊
- CSS顏色
- 背景圖片
- 文本
- CSS列表
- DIV+CSS布局
- 內聯元素和區塊元素介紹
- Display屬性
- 盒子模型的邊距和邊框
- 浮動和清除浮動
- 用Position屬性進行定位
- 專題:居中和對齊
- flex布局
- CSS新特性
- CSS3邊框
- 動畫
- Javascript
- HelloWorld
- 語句與變量
- 一切皆對象
- 標識符、注釋和區塊
- 基本數據類型和引用數據類型
- 語句
- 條件語句
- 循環語句
- 標準庫
- Array對象
- Number對象
- String對象
- JSON對象
- Math對象
- Date對象
- 數據類型
- typeof運算符
- number
- 字符串
- 布爾類型
- 函數
- 數組
- Dom模型
- Dom和Dom節點
- 特征相關屬性
- 節點對象方法
- Element對象
- Attribute對象
- Text節點和CSS操作
- 事件模型
- WebStorage
- BOM模型
- window對象
- 計時事件
- jQuery基礎
- 認識jQuery
- jQuery對象和DOM對象
- jQuery選擇器
- jQuery Dom操作
- 查找節點和創建節點
- 插入節點和刪除節點
- 復制節點和替換節點
- 包裹節點和屬性操作
- 樣式操作
- 設置和獲取HTML、文本和值
- 遍歷節點和CSS操作
- jQuery 事件和動畫
- 事件綁定與冒泡處理
- jQuery動畫
- jQuery 插件
- validate 插件
- jQuery與Ajax的應用
- Ajax簡介
- jquery中的Ajax
- Vue.js基礎與實戰
- HelloWorld
- v-for、v-on、v-model
- 組件化編程
- 生命周期函數(鉤子)
- 計算屬性、偵聽器、方法
- class與style綁定
- 關于組件的一些問題
- 單項數據流和Prop驗證
- 項目環境搭建
- 關于git的一些情況
- JavaWeb教程
- 對象和類的概念
- 對象和類的介紹
- 對象和類的介紹2
- 類的繼承與權限控制
- Object類
- 多態的內容
- 容器
- 流
- Servlet
- Servlet練習
- Session和Cookie
- JSP
- 內置對象
- JSTL和EL
- JDBC
- 文件上傳和下載
- 過濾器
- 數據庫
- 數據庫介紹
- MySQL的安裝
- SQL
- 表基本操作
- 修改數據語句
- 數據檢索操作
- 多表數據操作
- 表結構設計
- 綜合應用
- 作業與練習
- Maven教程
- Maven安裝配置