JSTL核心標簽庫

来源:https://www.cnblogs.com/chromer/archive/2018/10/07/jstl.html
-Advertisement-
Play Games

1.<c:set/>給域對象賦值 2.<c:out/>獲取域對象的數據 3.<c:if/>單條件判斷 test:條件表達式。返貨true的時候,就會執行if標簽體的內容,否則不執行。 4.<c:choose/>+<c:when/>+<c:otherwise/>多條件判斷 5.<c:forEach/> ...


 1     <%-- 保存數據 --%>
 2     <c:set></c:set>
 3 
 4     <%-- 獲取數據 --%>
 5     <c:out value=""></c:out>
 6 
 7     <%-- 單條件判斷 --%>
 8     <c:if test=""></c:if>
 9 
10     <%-- 多條件判斷 --%>
11     <c:choose></c:choose>
12     <c:when test=""></c:when>
13     <c:otherwise></c:otherwise>
14 
15     <%-- 用於迭代(迴圈) --%>
16     <c:forEach></c:forEach>
17     <c:forTokens items="" delims=""></c:forTokens>
18 
19     <%-- 重定向 --%>
20     <c:redirect></c:redirect>

1.<c:set/>給域對象賦值

JSTL標簽
    var:數據的名稱
    value:保存的數據值
    scope:保存到哪個域
        page:page域
        request:request域
        session:session域
        application:application域
 1       <%--
 2           <c:set/> 給域對象賦值
 3        --%>
 4        <%-- jsp腳本 --%>
 5        <%
 6            //String name = "eric";
 7            //pageContext.setAttribute("name", name);
 8        %>
 9        <%-- 
10            JSTL標簽
11             var:數據的名稱
12             value:保存的數據值
13             scope:保存到哪個域
14                 page:page域
15                 request:request域
16                 session:session域
17                 application:application域
18         --%>
19        <c:set var="name" value="jacky" scope="request"/>
20        ${requestScope.name}
View Code

 

 
2.<c:out/>獲取域對象的數據
value:代表獲取域中的某個域中的名稱內容,如果數據在域中,必須使用EL表達式去獲取
default:預設值。當前需要獲取的內容為null時,那麼使用預設值代替
escapeXml:預設情況下為true,out標簽會把輸出的內容進行轉義。如果不需要轉義,則為false即可。
 1     <%--
 2       2. <c:out/> 獲取域對象的數據
 3      --%>
 4     <%-- EL表達式 --%>
 5      ${name }<br>
 6     <%--
 7       value:代表獲取域中的某個域中的名稱內容,如果數據在域中,必須使用EL表達式去獲取
 8        default:預設值。當前需要獲取的內容為null時,那麼使用預設值代替
 9        escapeXml:預設情況下為true,out標簽會把輸出的內容進行轉義。如果不需要轉義,則為false即可。
10       --%>
11     <c:out value="${name }"  default="<h3>預設值</h3>" escapeXml="false"></c:out>
View Code 

3.<c:if/>單條件判斷

test:條件表達式。返貨true的時候,就會執行if標簽體的內容,否則不執行。

1 <%--
2     3.<c:if/>單條件判斷
3  --%>
4 <%--
5     test:條件表達式。返貨true的時候,就會執行if標簽體的內容,否則不執行。
6 --%>
7 <c:if test="${10 > 8}">
8       <input type="submit" value="提交"/>
9 </c:if>

4.<c:choose/>+<c:when/>+<c:otherwise/>多條件判斷

 1 <%--
 2     4.<c:choose/>+<c:when/>+<c:otherwise/> 多條件判斷
 3  --%>
 4 <%--模擬登錄 --%>
 5 <c:set var="user" value="jacky" scope="session"/>
 6 <c:choose>
 7     <c:when test="${!empty sessionScope.user }">
 8        歡迎回來,你的用戶名是:${sessionScope.user},<a href="">【退出登錄】</a>
 9     </c:when>
10     <c:otherwise>
11         請先<a href="">註冊</a>或<a href="">登錄</a>
12     </c:otherwise>
13 </c:choose>
View Code

 

5.<c:forEach/>用於迭代或迴圈

begin:從哪個元素開始遍歷,從0開始 可以不寫
end:到哪個元素為止  可以不寫
step:增加步長。預設為1 可以不寫
items:需要遍歷的數據。(數組|List集合|Map集合),如果是獲取域的數據,那麼使用EL表達式獲取
var:每個元素名稱
varStatus:當前狀態對象。該對象封裝當前元素狀態信息。例如count屬性:表示當前遍歷的是哪個元素,從1開始
 1 <%--
 2     5.<c:forEach/>用於迭代或迴圈
 3 --%>
 4 <%
 5     //List集合
 6     List<Student> list = new ArrayList<Student>();
 7     list.add(new Student("abc","123"));
 8     list.add(new Student("def","123"));
 9     list.add(new Student("ghi","123"));
10     list.add(new Student("jkl","123"));
11     pageContext.setAttribute("list", list);
12 %>
13 EL表達式:<br>${list[0]}<br>${list[1]}<br>${list[2]}<br>${list[3]}<br>
14 <%--
15        begin:從哪個元素開始遍歷,從0開始 可以不寫
16        end:到哪個元素為止  可以不寫
17        step:增加步長。預設為1 可以不寫
18        items:需要遍歷的數據。(數組|List集合|Map集合),如果是獲取域的數據,那麼使用EL表達式獲取
19        var:每個元素名稱
20        varStatus:當前狀態對象。該對象封裝當前元素狀態信息。例如count屬性:表示當前遍歷的是哪個元素,從1開始
21 --%>
22 JSTL標簽:<br>
23 <c:forEach items="${list}" var="student" varStatus="varStats">
24         學生${varStats.count} :${student}<br>
25 </c:forEach>
26 <hr/>
27 <%
28         //Map集合
29       Map<String,Student> map = new HashMap<String,Student>();
30       map.put("001", new Student("eric","1234"));
31       map.put("002", new Student("rose","1234"));
32       map.put("003", new Student("jacky","1234"));
33       pageContext.setAttribute("map", map);
34           %>
35 EL表達式:<br>${map['001']}<br>${map['002']}<br>${map['003']}<br>
36 JSTL標簽:<br>
37 <%--
38       註意:forEach標簽遍歷Map集合時,把每個Map的對象使用Entry封裝,Entry封裝鍵對象和值對象,
39       通過getKey()獲取鍵對象,通過getValue()獲取值對象
40 --%>
41 <c:forEach items="${map}" var="entry" varStatus="varStats">
42       <%--學生${varStats.count}:${student}<br> --%>
43       編號:${entry.key} - 姓名:${entry.value.name} - 密碼:${entry.value.password}<br>
44 </c:forEach>
View Code
6.<c:forTokens/>遍歷特殊字元串

items:需要遍歷的字元串
delims:指定分隔符號
var:每個內容的名稱
 1 <%--
 2     6.<c:forTokens/>遍歷特殊字元串
 3 --%>
 4 <c:set var="str" value="java-net-php-平面設計" scope="request" />
 5 <%-- JSP腳本形式 --%>
 6 <%
 7       String str = (String)request.getAttribute("str");
 8       String[] strs = str.split("-");
 9       for(int i = 0; i < strs.length; i++){
10           out.write(strs[i]+",");
11       }
12 %>
13 <br>
14 <%--JSTL標簽 --%>
15 <%--
16       items:需要遍歷的字元串
17       delims:指定分隔符號
18       var:每個內容的名稱
19 --%>
20 <c:forTokens items="${str}" delims="-" var="s" varStatus="varStats">
21       ${varStats.count}:${s}<br>
22 </c:forTokens>
View Code

 









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

-Advertisement-
Play Games
更多相關文章
  • 前言 JS基於原型的‘類’,一直被轉行前端的碼僚們大呼驚奇,但接近傳統模式使用class關鍵字定義的出現,卻使得一些前端同行深感遺憾而紛紛留言:“還我獨特的JS”、“凈搞些沒實質的東西”、“自己沒有類還非要往別家的類上靠”,甚至是“已轉行”等等。有情緒很正常,畢竟新知識意味著更多時間與精力的開銷,又 ...
  • ```const open$ = new Subject(); const ws = webSocket({ url: 'wss://echo.websocket.org', openObserver: open$ }); // 訂閱打開事件 open$.subscribe(() => {});``... ...
  • web基礎筆記 1.首行縮進:text-indent 單位有兩種:em 字元 、 px 像素 2.字母間距或文字間距:letter-spacing 單詞間距:word-spacing 3.margin 兩個問題: (1) 當大盒子里放小盒子,給小盒子加margin-top時,小盒子會帶著大盒子一起向 ...
  • 1 引言 作者給出了從 12 個角度全面分析 JS 庫的可用性,分別是: 特性。 穩定性。 性能。 包生態。 社區。 學習曲線。 文檔。 工具。 發展歷史。 團隊。 相容性。 趨勢。 下麵總結一下作者的觀點。 2 概述 & 精讀 特性 當你調研一個 JS 庫,功能當然是最重要的,就好比 Re ...
  • 網上的相關教程非常多,基礎知識自行搜索即可。 習題主要選自Orelly出版的《數據結構與演算法javascript描述》一書。 參考代碼可見: "https://github.com/dashnowords/blogs/tree/master/Structure/List" 鏈表的基本知識 特點: 鏈 ...
  • 報錯: github 問題地址 https://github.com/facebook/react-native/issues/19774 如果是因為下載了新的插件或者遷移項目導致構建出現這種問題在項目根目錄下運行: 1 cd ./node_modules/react-native/third-pa ...
  • 結合設計模式,通過代碼理解面向切麵編程,有代碼的很好理解的,5分鐘可以看三遍 通過,結構型設計模式,裝飾器模式來實現AOP,代碼如下 通過,結構型設計模式,代理模式來實現AOP,代碼如下 通過Unity實現AOP,配置太複雜就不貼了。。。就一個實現類的代碼,可以用於添加方法的日誌,異常處理,不用修改 ...
  • 有效內容不超過100字,總共200字,非常建議閱讀!!! 設計模式被稱之為程式開發、系統設計、代碼優化必備之良品,老少咸宜!那究竟什麼是設計模式呢?其實設計模式就是在面向對象語言開發過程中, 遇到的種種場景和問題,提出的解決方案和思路,沉澱下來就是設計模式了!其實設計模式也就是套路,解決問題的套路。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...