1. 程式人生 > >jstl之c標籤、Function函式庫

jstl之c標籤、Function函式庫

JSTL組成:
JSTL –Core 核心標籤庫。 - 這是本部分的重點
JSTL – I18N - 國際化標籤庫。Internationalization- I18N
JSTL - Functions – 函式庫。
JSTL – SQL – 資料庫操作標籤(有悖於MVC設計模式不用不講)。
JSTL - XML ,對XML的操作(同SQL標籤)。

JSTL一般必須配合EL表示式使用才能發揮其功能之強大

如果你的Web專案是基於JavaEE2.5或以上的。可以在你專案的任意頁面上通過<%@ taglib 指令使用JSTL的核心標籤庫。
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
uri是引用標籤庫的資源定位符,並不代表一個實際的地址。
Prefix是自定義的字首。

JSTL-Core一共包含以下幾個子標籤:
這裡寫圖片描述
這裡寫圖片描述

標籤的具體使用說明可以用Java反編譯軟體JD-GUI開啟tomcat/webapps下的對應專案下的WEB-INF/LIB/jstl-impl.jar/META-INF找到對應的標籤開啟即可。

具體使用程式碼示例如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head> <title>jstl演示</title> </head> <body> <!-- 1、演示c:out的用法 --> <% pageContext.setAttribute("RED", "<font color='red'>你好</font>"); %> <c:out value="${RED }" /> <%--結果為:<font color='red'>你好</font>,escapeXml預設為true,即預設輸出為原樣格式 --%>
<br/> <c:out value="${RED }" escapeXml="false" /> <%--結果為:紅色的“你好” --%> <br/> <c:out value="${GREEN }" escapeXml="false" default="找不到"/> <%--結果為:找不到 ”/>從page到application開始查詢,如果沒有找到,就顯示預設值“找不到” --%> <br/> <!-- 2、演示c:set的用法 --> <c:set var="name" value="Jack" /> ${name } <%--結果為:Jack --%> <br/> <jsp:useBean id="user" class="cn.hncu.domain.User"/> <c:set target="${user }" property="name" value="Tom"/> <c:set target="${user }" property="age" value="24"/> ${user.name }&nbsp;&nbsp;${user.age } <%--結果為:Tom 24 --%> <br/> <jsp:useBean id="map" class="java.util.HashMap" scope="request"/> <c:set target="${map }" property="name" value="張三" /> <c:set target="${map }" property="sex" value="男" /> ${map.name }&nbsp;&nbsp;${map.sex } <%--結果為:張三 男 --%> <br/> <!-- 3、演示c:if的用法 --> <c:if test="${map.name=='張三' }" var="boo" scope="request" > abcdefg </c:if> <c:if test="${!boo }"> gfdecba </c:if> <%--結果為:abcdefg,注意此處因為有包含關係,c:if不能用自封閉--%> <br/> <!-- 4、演示c:choose c:when c:otherwise的用法 --> <c:set var="score" value="95"/> <c:choose> <c:when test="${score>90 }"> 優秀 </c:when> <c:when test="${score>80 }"> 良好 </c:when> <c:when test="${score>70 }"> 中等 </c:when> <c:otherwise> 不行 </c:otherwise> </c:choose> <%-- 結果為:優秀 此處功能相當於帶break功能的switch-case語句 --%> <br/> <!-- 5、演示c:remove --> <c:set var="aaa" value="abcde" /> <c:remove var="aaa"/> ${aaa } <%-- 沒有輸出結果,因為移除了aaa屬性 --%> <br/> <!-- 5、演示c:import --> <c:import url="/jsps/aa.jsp"></c:import> <%-- 此處有兩個細節,url的第一個"/"代表專案根本目錄,功能上此處相當於jsp動態匯入, 兩個頁面共享同一個request --%> <br/> <%-- <!-- 6、演示c:redirect --> <c:redirect url="/jsps/bb.jsp"/> --%> <%-- 重定向,相當於response.sendRedirect(...) --%> <!-- 7、演示c:rforTokens --> <c:forTokens items="aa,bb,cc,dd" delims="," var="x"> ${x },,, </c:forTokens> <%-- 結果為:aa,,, bb,,, cc,,, dd,,,,相當於拆分字串 --%> <br/> <!-- 8、演示c:forEach --> <% String strs[] = {"11","22","33","44","55"}; pageContext.setAttribute("strs", strs); %> <c:forEach items="${strs}" var="str"> ${str }- </c:forEach> <%-- 結果為:11-22-33-44-55,功能相當於增強for迴圈 --%> <c:forEach begin="20" end="40" step="2" var="i" varStatus="x"> ${i },${x.index },${x.count }<br/> </c:forEach> <%-- 功能相當於普通for迴圈 --%> </body> </html>

jstl的Function函式呼叫方式:
用之前現在頁面首部匯入標籤<%@taglib uri=”http://java.sun.com/jsp/jstl/functions” prefix=”fn”%>

引用:${fn:函式名(引數)}

function標籤庫函式使用:

1:${fn:contains(name, searchString)} name變數的字串值是否包含searchString子串,返回boolean值

2:${fn:containsIgnoreCase(name, searchString)} 與1相同+忽視大小寫

3:${fn:endsWith(filename, “.txt”)} 判斷filename是否以.txt子串結束 ,返回boolean值

4:${fn:escapeXml(param:info)} Escapes characters that could be interpreted as XML markup.返回string值

5:fn:indexOf(name,)nameint6{fn:join(array, “;”)} 將array陣列,用;連線成一個字串,返回string值

7:${fn:length(shoppingCart.products)} shoppingCart.products變數的長度,返回int值

8:${fn:replace(text, “-“, “•”)} 將text中的-字串用•字串代替,返回行的字串String值

9:${fn:split(customerNames, “;”)} 將customerNames用;分割,返回字串陣列

10:${fn:startsWith(product.id, “100-“)} 判斷product.id是否以100-子串開頭 ,返回boolean值

11:${fn:substring(zip, 6, -1)} 擷取zip的子串,從下標為6 到length-1(不包含)的子串,返回子串String值

12:${fn:substringAfter(zip, “-“)} 將zip中 從 第一次出現-字串的下標 到最後 擷取成子串,返回子串String值

13:${fn:substringBefore(zip, “-“)} 將zip中 從下標0 到 第一次出現-字串的下標 (不包含) 擷取成子串,返回子串String值

14:${fn.toLowerCase(product.name)} 將product.name全部字母轉換成小寫,返回新的String值

15:${fn.UpperCase(product.name)} 將product.name全部字母轉換成大寫,返回新的String值

16:${fn.trim(name)} name前後空格去掉,返回新的String值