淺談JSP之JSTL
簡介

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特殊字符
注意:
下面寫個小例子來說明下:
看著上面代碼,不妨在大腦里構思一下結果,第一個會輸出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
switch語句中有case,而
c:if
scope的默認值為page
舉例:判斷輸入框是否為admin ,是就輸出歡迎登錄
if條件判斷結果:${result}
c:foreach
語法:
<% List不指定begin、end遍歷集合
指定begin、end、step
以上關于JSTL的常用核心標簽基礎就介紹到這里了
總結:
這里從JSTL的簡介、組成、特點、使用條件和常用核心標簽進行一一舉例介紹,如有不足之處,歡迎指正!
感恩能與大家在華為云遇見!希望能與大家一起在華為云社區共同成長。
JSP
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。