JavaWeb---JSTL標籤庫 阿新 • • 發佈:2018-12-12 JSTL標籤庫 對EL表示式的擴充套件,Apache提供,匯入jar包 四大庫: core:核心庫,重點 fmt:格式化:日期、數字 sql:過時 xml:過時 xml匯入庫:<%@taglib prefix="字首" uri="路徑"%> 核心庫:core --> c標籤 1. out和set <c:out>:輸出 value:可以是字串常量,也可以是EL表示式 default:當要輸出的內容為null時,會輸出default指定的值 escapeXml:預設值為true,表示轉義! <c:set>:設定(建立域的屬性) var:變數名 value:變數值,可以是EL表示式 scope:域,預設為page,可選值:page、request、session、application 2. remove <remove>:刪除域變數 var:變數名 scope:如果不指定scope,預設刪除所有域中的該名稱的變數 3. url value:指定一個路徑!它會在路徑前面自動新增專案名。 <c:url value="/index.jsp"/>,它會輸出project1/index.jsp 子標籤:<c:param>,用來給url後面新增引數, 例如: <c:url value="/index.jsp"> <c:param name="username" value="張三"/> <!--可以對引數進行url編碼!!--> </c:url> 結果為:/project1/index.jsp?username=%ED%2C%3F%ED%2C%3F var:指定變數名,url標籤就不會再輸出到頁面,而是把生儲存到域中 scope:它與var一起使用,用來儲存url。 4. if:對應java中的if語句 <c:if test="布林型別">...</c:if>,當test為1時,執行標籤體內容! 5. choose:它對應java中的if/else if/ ... /else 例如: <c:choose> <c:when test="">...</c:when> <c:when test="">...</c:when> <c:when test="">...</c:when> ... <c:otherwise> ...</c:otherwise> </c:choose> 等同與 if(...) {....} else if(....){...} else if(....){...} else if(....){...} else {...} 6. forEach 它用來迴圈遍歷陣列、集合!用來計數方式實現迴圈! 計數方式: <c:forEach var="i" begin="1" end="10"> ${i} </c:forEach> 等價 for(int i = 1; i <= 10; i++) { System.out.println(i); } 屬性: var:迴圈變數 begin:設定迴圈變數從幾開始。 end:設定迴圈變數到幾結束。 step:設定步長!等同與java中的i++,或i+=2。step預設為1 迴圈狀態:可以使用varStatus來建立迴圈狀態變數! 迴圈狀態變數有如下屬性: varStatus:迴圈變數 count: 迴圈元素的個數 index: 迴圈元素的下標 first: 是否為第一個元素 last: 是否為最後一個元素 current:當前元素 <c:forEach items="${list }" varStatus="vs"> ${vs.index} ${vs.count } ${vs.first } ${vs.last } ${vs.current }<br/> </c:forEach> =============================================================== fmt庫:格式化庫 <fmt:formatDate value="" pattern=""> value:指定一個Date型別的變數 pattern:用來指定輸出的模板!例如:yyyy-MM-dd HH:mm:ss <fmt:formatNumber value="${num1}" pattern="0.00"> 保留小數點後2位,它會四捨五入!如果不足2位,以0補位! <fmt:formatNumber value="${num1}" pattern="#.##"> 保留小數點後2位,它會四捨五入!如果不足2位,不補位! =============================================================== 自定義標籤 步驟: 1.標籤處理類(標籤也是一個物件,那麼就需要先有類!) 2.tld檔案,它是一個xml 3.頁面中使用<%@taglib%>來指定tld檔案的位置 標籤處理類 SimpleTag介面: * doTag():每次執行標籤時都會呼叫這個方法; * getParent():返回父標籤(非生命週期方法) * setParent(JspTag):設定父標籤 * setJspBody(JspFragment):設定標籤體 * setJspContext(JspContext):設定jsp上下文物件,它兒子是PageContext 其中doTag()會在其他三個方法之後被tomcat呼叫。 配置tld檔案 tld檔案一般都放到WEB-INF之下,保證客戶端訪問不到! <tag> <name>myTag1</name> 指定當前標籤的名稱 <tag-class>tag.MyTag1</tag-class> 指定當前標籤的標籤處理類! <body-content>empty</body-content> 指定標籤體的型別,這裡使用的是空標籤 </tag> 頁面中指定tld檔案位置 <%@ taglib prefix="it" uri="/WEB-INF/tlds/it-tag.tld" %> 導標籤庫,為頁面指定tld檔案的位置! 標籤屬性 標籤處理類新增屬性,屬性至少要且一個set方法!這個set方法會在doTag()方法之前被tomcat執行!所在doTag()中就可以使用屬性了 步驟: 1. 給標籤處理類新增屬性 2. 在tld檔案中對屬性進行配置 <attribute> <name>test</name> 指定屬性名 <required>true</required> 指定屬性是否為必需的 <rtexprvalue>true</rtexprvalue> 指定屬性是否可以使用EL </attribute>