淺談JSP之JSTL

      網友投稿 1013 2025-04-01

      簡介


      JSTL的英文全稱是JavaServer Pages Standard Tag Library,中文全稱是JSP標準標識庫。JSTL技術標準是由JCP(lava Community Process)組織的JSR052專家組發布,Apache組織將其列入Jakarta項目,Sun公司將JSTL的程序包加入互聯網服務開發工具包內(Web Services Developer Pack(WSDP)),作為JSP技術應用的一個標準。

      JSTL標簽是基于JSP頁面的,這些標簽可以插入在JSP代碼中,本質上JSTL也是提前定義好的一組標簽,這些標簽封裝了不同的功能,在頁面上調用標簽時,就等于調用了封裝起來的功能。JSTL的目標是簡化JSP頁面的設計。對于頁面設計人員來說,使用腳本語言操作動態數據是比較困難的,而采用標簽和表達式語言則相對容易,JSTL的使用為頁面設計人員和程序開發人員的分工協作提供了便利。

      JSTL標識庫的作用是減少JSP文件的Java代碼,使Java代碼與HTML代碼分離,所以JSTL標識庫符合MVC設計理念。MVC設計理念的優勢是將動作控制、數據處理、結果顯示三者分離。

      主要組成

      JSTL包含了和以下操作相關的標簽:

      1、核心標簽:核心標簽庫是整個JSTL中最常用的部分,主要由以下幾部分組成:基本輸入輸出、流程控制、迭代操作和URL操作。負責Web應用的常見工作,如:循環、表達式賦值、基本輸入輸出等。

      2、I18N格式標簽庫:用來格式化顯示數據的工作如:對不同區域的日期格式化等。

      3、XML標簽庫:用來訪問XML文件的工作,支持JSP對XML文檔的處理。

      4、數據庫標簽庫:SQL標簽庫包括了大部分訪問數據庫的邏輯操作,包括查詢、更新、事務處理、設置數據源等。可以做訪問數據庫的工作。

      5、函數標簽庫:用來讀取已經定義的某個函數。

      優點

      1、簡化了JSP和Web應用程序的開發。

      2、在應用程序服務器之間提供了一致的接口,最大限度地提高了Web應用在各應用服務器之間的移植。

      3、允許JSP設計工具與Web應用程序開發的進一步集成。相信不久就會有支持JSTL的IDE開發工具出現。

      4、以一種統一的方式減少了JSP中的Scriptlets代碼數量,可以達到程序中沒有任何Scriptlest代碼。

      JSTL封裝了JSP開發中的常用功能。比如說,在沒有JSTL時,通過Scriptlets來迭代輸出某個List(Set),有了JSTL,就可以使用它的一系列的Tag進行迭代輸出。由于JSTL是JSP2.0規范的一部分,所以最新的Web容器都會支持它。

      使用條件

      在JSP中使用JSTL標簽需要具備如下兩個條件。

      條件一:要在JSP頁面中使用JSTL標簽,需使用taglib指令引用標簽庫。

      條件二:要在JSP中使用JSTL標簽,還需要下載安裝JSTL實現(Implementation)。

      JSTL1.2實現的-為:https:jstl.dev.java.net,下載文件為jstl-impl-1.2.jar,將該文件復制到Web應用程序的WEB-INFlib文件夾中即可使用JSTL。

      JSTL1.0實現的-為:http://www.apache.org/dist/jakarta/taglibs/standard/,Windows用戶下載jakarta-taglibs-standard-current.zip。下載后解壓,在lib文件夾中有兩個文件:

      ·jstl.jar;

      ·standard.jar.

      將這兩個文件復制到Web應用程序的WEB-INFlib文件夾中即可使用JSTL?。

      一般來說,引入格式如下:

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

      我這里使用的是老版本的jstl1.0,下面讓我們使用jstl的幾個核心標簽來進行具體的演示:

      核心標簽

      c:out

      標簽用來顯示一個表達式的結果,與<%= %>作用相似,它們的區別就是標簽可以直接通過"."操作符來訪問屬性。

      參數:value:要輸出的內容值? default:輸出的默認值 escapeXml:是否忽略xml特殊字符

      注意:標簽會自動忽略XML標記字符,所以它們不會被當做標簽來處理。

      下面寫個小例子來說明下:


      <%-- 如果value的值為空,顯示默認值里的內容--%>

      看著上面代碼,不妨在大腦里構思一下結果,第一個會輸出value 的所有值,第二個因為escapexml默認為true,所以忽略了a標簽,不會進行轉義,第三個會轉義a標簽,第四個因為value的值用el表達式綁定的是null值,所以默認輸出的是default的值

      run一下,看看效果:

      c:set

      標簽用于設置變量值和對象屬性。

      標簽就是行為標簽的孿生兄弟。

      這個標簽之所以很有用呢,是因為它會計算表達式的值,然后使用計算結果來設置 JavaBean 對象或 java.util.Map 對象的值。

      語法格式:

      參數含義:scope的默認值為page

      注意:如果指定了target屬性,那么property屬性也需要被指定。

      舉例:

      先引入JSTL標簽庫,引入了一個javabean對象Person

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

      public class Person { private String username; private int age; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }

      將數據保存到page域中

      從page域中獲取數據:${username}

      <%-- pageScope.username--%>

      將數據保存到request域中

      從request域中獲取數據:${age}


      將數據保存到seesion域中

      從seesion域中獲取數據:${address}


      將數據保存到application域中

      從application域中獲取數據:${sex}

      ${username} ${age} ${sex} ${address}


      將數據保存到JavaBean對象中

      從JavaBean對象中獲取數據:${person.username}

      <% Map map =new HashMap(); request.setAttribute("mapkey",map); %>

      從map對象里獲取數據:${mapkey.data}

      這里我示例了四個范圍:page,request,seesion,application和javabean、map,通過c:set保存值,然后通過el表達式取值

      c:choose和c:when、c:otherwise

      標簽與Java switch語句的功能一樣,用于在眾多選項中做出選擇,本身只當做的父標簽。

      switch語句中有case,而標簽中對應有,switch語句中有default,而標簽中有

      淺談JSP之JSTL

      c:if

      標簽判斷表達式的值,如果表達式的值為 true 則執行其主體內容。

      ...

      scope的默認值為page

      舉例:判斷輸入框是否為admin ,是就輸出歡迎登錄


      if條件判斷結果:${result}

      c:foreach

      標簽是更加通用的標簽,因為它迭代一個集合中的對象。

      語法:

      <% List list =new ArrayList<>(); list.add("element1"); list.add("element2"); list.add("element3"); list.add("element4"); list.add("element5"); request.setAttribute("list",list); %>

      不指定begin、end遍歷集合
      指定begin、end、step

      以上關于JSTL的常用核心標簽基礎就介紹到這里了

      總結:

      這里從JSTL的簡介、組成、特點、使用條件和常用核心標簽進行一一舉例介紹,如有不足之處,歡迎指正!

      感恩能與大家在華為云遇見!希望能與大家一起在華為云社區共同成長。

      JSP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Flutter 完美驗證碼輸入框(2 種方法)
      下一篇:word編號后面的空格距離如何設置(為什么word所加的空格距離不一樣)
      相關文章
      亚洲精品国产成人99久久| 亚洲中文字幕久久无码| 亚洲成人动漫在线| 鲁死你资源站亚洲av| 狠狠色香婷婷久久亚洲精品| 亚洲理论片在线观看| 亚洲色图综合网站| 亚洲自偷精品视频自拍| 亚洲好看的理论片电影| 亚洲另类激情综合偷自拍| 亚洲国产人成在线观看69网站 | 亚洲人成色4444在线观看| 亚洲高清有码中文字| 中文字幕亚洲综合小综合在线| 91嫩草亚洲精品| 激情亚洲一区国产精品| 亚洲中文字幕一二三四区苍井空| 国产精品亚洲自在线播放页码| 精品国产日韩久久亚洲| 亚洲日韩精品无码AV海量| 亚洲精品欧美综合四区| 精品国产_亚洲人成在线| 午夜在线亚洲男人午在线| 亚洲国产精品不卡毛片a在线| 亚洲国产成人久久一区久久| 亚洲人妻av伦理| 综合亚洲伊人午夜网| 亚洲大尺度无码无码专区| 亚洲AV无码国产精品麻豆天美 | 亚洲国产区男人本色| AV激情亚洲男人的天堂国语| 亚洲精品456播放| 亚洲熟妇丰满多毛XXXX| 香蕉视频在线观看亚洲| 亚洲首页在线观看| 亚洲男人天堂2022| 天天综合亚洲色在线精品| 亚洲无码精品浪潮| 亚洲国产精品特色大片观看完整版 | 亚洲国产一区二区视频网站| 亚洲一区二区三区偷拍女厕 |