JSTL和EL的使用

来源:http://www.cnblogs.com/adversary/archive/2016/10/19/5976972.html
-Advertisement-
Play Games

JSTL和EL的使用 使用JSTL前的準備 想要使用JSTL,首先需要給工程導入JSTL的包(JSTL.jar和standard.jar). JSTL標簽庫 在JSTL中分為以下五個標簽 使用不同的標簽的時候需要在JSP中引入不同的庫 核心標簽(Core): 引入標簽庫 <c:set> <c:set ...


JSTLEL的使用

使用JSTL前的準備

想要使用JSTL,首先需要給工程導入JSTL的包(JSTL.jarstandard.jar).

JSTL標簽庫

JSTL中分為以下五個標簽

  1. 核心標簽
  2. 格式化標簽
  3. SQL標簽
  4. XML標簽
  5. JSTL函數

使用不同的標簽的時候需要在JSP中引入不同的庫

核心標簽(Core):

引入標簽庫

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set>

<c:set> 等同於JSP中的 sessionsetAttribute() 方法

使用方法:

1.<c:set var=”名字” value=”值”/>

2.<c:set var=”名字”></c:set>

<c:out>

<c:out> 等同於 JSP中的 <%= %>

使用方法:

<c:out value=”需要輸出的值”>

在這裡可以用EL表達式來進行輸出session中的Attrbute

:

<c:set var=”test” value=”這是一個測試”>

<c:out value=”${test}”>

輸出結果: 這是一個測試

<c:remove>

<c:remove> c:set標簽正好相反,c:set標簽是設置setAttrbute 這個標簽則是 刪除 Attrbute中設置的值 等同於 session中的removeAttrbute()方法

使用方法:

<c:remove var=”名字”/>

<c:if>

<c:if> 等同於 java 中的 if 語句

使用方法:

<c:if test=”條件”>滿足條件執行的JSP代碼</c:if>

<c:catch>

<c:catch> 類似於 java 中的 try

使用方法:

<c:catch var=”名字”>JSP代碼</c:catch>

如果在執行過程中,JSP代碼發生了錯誤,那麼將會複製給名字,因此我們可以通過判斷名字是否為NULL 來進行判斷是否有異常發生

:

<c:catch var=”testException”>

<% int i = 5/0; %>

</c:catch>

<c:if test=”${testException != null}”>

    上面的代碼有錯誤發生

 </c:if>

輸出結果: 上面的代碼有錯誤發生

如果將 上面的 0 改為 3 則沒有任何輸出結果

<c:choose> <c:when>

<c:choose> <c:when> 類似於 java 中的 switch case

使用方法:(c:choose中可以有多個c:when標簽)

<c:choose>

<c:when test=”條件”>處理</c:when>

<c:when test=”條件”>處理</c:when>

</c:choose>

 

:

<c:set var=”test” value=”10”/>

<c:choose>

<c:when test=”${test > 5}”>test 大於5</c:when>

<c:when test=”${test < 5}”>test小於5</c:when>

</c:choose>

 

輸出結果: test大於5

<c:otherwise>

<c:otherwise> 等同於 java switch 中的 default

使用方法

<c:choose>

<c:otherwise>處理</c:otherwise>

</c:choose>

 

choose 中的 when 沒有滿足條件的時候 會執行 otherwise 中的內容

註意: choose when otherwise 是一組 when otherwise 必須寫在choose

<c:import>

使用方法:

<c:import var=”date” url=”http://www.baidu.com” />

通過上面的寫法會將 百度 的源代碼返回到 date 變數中,使用

<c:out value=”${date}”>

 

輸出

<c:forEach> <c:forTokens>

類似於JAVA中的 FOR迴圈 和 FOREACH迴圈

使用方法:

<c:forEach var=”名字(i)” begin=”開始數字(1)” end=”結束數字(5)”>

${i}

</c:forEach>

 

輸出結果是1 2 3 4 5

使用方法:

<c:forTokens items=”a,b,c,d,e” delims=”,” var=”name”>

${name}

</c:forTokens>

 

輸出結果 a b c d e

forEach類似於JAVAfor 迴圈 設置一個開始數字 begin 設置一個結束數字 end 然後每次迴圈都會將值賦值給 var   另外還有個 setp參數 裡面可以設置值 意思是每次增加幾個數

forTokens類似於JAVA中的foreach items中放一個組 然後 delims設置以什麼分割 然後 將分割後迴圈的值賦值給 var  如果 items中存放的是一個集合 那麼可以不用寫delims 這樣每迴圈一次 就會取出集合中的一個放在 var

<c:redirect>

類似於service中的重定向

使用方法:

<c:redirect url=”http://www.baidu.com”/>

 

重定向到百度去

另外還有<c:url> <c:param>兩個標簽

 

EL表達式介紹:

EL表達式定義規則:$ 開頭 內容寫在 {} 中 例: ${test}

當然,因為EL表達式所有的代碼都是寫在{}中的,所以我們也可以在裡面寫運算

比如:

${test+100}

最終輸出的結果就是test這個變數加上數字100後的值了

再比如

 

${test != null} 

最終輸出的結果就是一個true  通過這種方式  我們可以很好的和JSTL結合起來一起使用.

EL中的運算符分為  .  和  []  兩種

如果要動態取值 可以使用[]  比如:

${session.user[date]}

 其中的date是一個變數

上面代碼的意思是 取出 session.user這個數組裡面的第 date 個元素

需要註意的是,EL表達式限制了我們調用JAVA方法,如果想要調用,可以自定義一個TAG

EL表達式查找順序(都是針對Attrbute()):

如果使用類似於 ${username} 的時候沒有在哪一個範圍查找username 那麼它會以:

  1. Page
  2. Request
  3. Session
  4. Application

為順序來進行查找,加入中途找到了 username 那麼就會返回值  如果一路沒找到 返回 null

EL表達式的隱性變數:

從這裡開始就是介紹EL表達式的隱性變數,通過這些隱性變數可以讓我們簡便完成很多複雜的操作:

pageContext  用來訪問JSP的隱性對象
pageScope page對象的MAP
requestScope  request對象的MAP
requestScope  request對象的MAP
sessionScope  session對象的MAP
applicationScope  application對象的MAP
param  包含請求參數字元串的MAP
paramValues  包含請求參數字元串數組的MAP
header  包含請求頭字元串的MAP
headerValues  包含請求頭字元串數組的MAP
cookie  按名稱存儲請求附帶的cookie的MAP

 

:假設我們是想要session中的name值 那麼我們可以使用:

${sessionScope.name}

再例:我們想要獲得GET或則POST傳遞過來的name參數,在以前我們只能使用:

request.getParameter(name);

 

使用EL表達式可代替為:

${param.name}

同樣,如果我們想要得到一個參數的數組,可以使用:

${paramValues.name}

當然,返回的是一個數組對象.


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • DataTable用於在.net項目中,用於緩存數據,DataTable表示記憶體中數據的一個表。CSV文件最早用在簡單的資料庫里,由於其格式簡單,並具備很強的開放性,所以起初被掃圖家用作自己圖集的標記。CSV文件是個純文本文件,每一行表示一張圖片的許多屬性。 在.net項目中運用C#將DataTab ...
  • 迪傑斯特拉(Dijkstra)演算法主要是針對沒有負值的有向圖,求解其中的單一起點到其他頂點的最短路徑演算法。本文主要總結迪傑斯特拉(Dijkstra)演算法的原理和演算法流程,最後通過程式實現在一個帶權值的有向圖中,選定某一個起點,求解到達其它節點的最短路徑,來加深對演算法的理解。 1 演算法原理 迪傑斯特拉 ...
  • 前言 本篇文章介紹ASP.NET Core里,用來處理HTTP封包的Middleware,為自己留個紀錄也希望能幫助到有需要的開發人員。 ASP.NET Core官網 結構 在ASP.NET Core里,每個從「瀏覽器傳入」的HTTP Request封包,會被系統封裝為「HttpRequest對象」 ...
  • 上一章筆者講到關於IO文件操作類,瞭解如何處理文件流。從這一章開始筆者將講解相對比較高級的知識點。而本章筆者就對WinForm開發的知識點進行講解和引導。現在很多業務都是面向於B/S模式的開發,JAVA也不另外。所以JAVA的程式員對J2EE部分的知識非常瞭解。卻對J2SE的知識點半知半解。甚至有一 ...
  • error: invalid preprocessing directive #difine| 無效的巨集定義處理 巨集定義define 寫成了 difine。 ...
  • 英文文檔: bin(x) Convert an integer number to a binary string. The result is a valid Python expression. If x is not a Python int object, it has to define ...
  • 英文文檔: any(iterable) Return True if any element of the iterable is true. If the iterable is empty, return False. Equivalent to: 說明: 1. 接受一個可迭代器對象為參數,當參 ...
  • 英文文檔: ascii(object) As repr(), return a string containing a printable representation of an object, but escape the non-ASCII characters in the string r ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...