XML 標(biāo)簽
JSTL XML標(biāo)簽庫提供了創(chuàng)建和操作XML文檔的標(biāo)簽。
引用XML標(biāo)簽庫的語法如下:
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
在使用xml標(biāo)簽前,你必須將XML 和 XPath 的相關(guān)包拷貝至你的<Tomcat 安裝目錄>\lib下:
XercesImpl.jar下載地址: http://www.apache.org/dist/xerces/j/
xalan.jar下載地址: http://xml.apache.org/xalan-j/index.html
|標(biāo)簽|描述|
|---|---|
|<x:out>
|與<%= ... >,類似,不過只用于XPath表達(dá)式
|
|<x:parse>
|解析 XML 數(shù)據(jù)
|
|<x:set>
|設(shè)置XPath表達(dá)式
|
|<x:if>
|判斷XPath表達(dá)式,若為真慷嗜,則執(zhí)行本體中的內(nèi)容,否則跳過本體
|
|<x:forEach>
|迭代XML文檔中的節(jié)點(diǎn)
|
|<x:choose>
|<x:when>和<x:otherwise>的父標(biāo)簽
|
|<x:when>
|<x:choose>的子標(biāo)簽丹壕,用來進(jìn)行條件判斷
|
|<x:otherwise>
|<x:choose>的子標(biāo)簽庆械,當(dāng)<x:when>判斷為false時(shí)被執(zhí)行
|
|<x:transform>
|將XSL轉(zhuǎn)換應(yīng)用在XML文檔中
|
|<x:param>
|與<x:transform>共同使用,用于設(shè)置XSL樣式表
|
使用JSP格式化XML
這個(gè)是XSLT樣式表style.xsl文件:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="books">
<table border="1" width="100%">
<xsl:for-each select="book">
<tr>
<td>
<i><xsl:value-of select="name"/></i>
</td>
<td>
<xsl:value-of select="author"/>
</td>
<td>
<xsl:value-of select="price"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
這個(gè)是main.jsp文件:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:transform Tags</title>
</head>
<body>
<h3>Books Info:</h3>
<c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set>
<c:import url="http://localhost:8080/style.xsl" var="xslt"/>
<x:transform xml="${xmltext}" xslt="${xslt}"/>
</body>
</html>
運(yùn)行結(jié)果如下:
運(yùn)行結(jié)果
JSTL函數(shù)
JSTL包含一系列標(biāo)準(zhǔn)函數(shù)菌赖,大部分是通用的字符串處理函數(shù)缭乘。
引用JSTL函數(shù)庫的語法如下:
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
fn函數(shù)的語法如下:
${fn:XXX()}
|標(biāo)簽|描述|
|---|---|
|fn:contains()
|測(cè)試輸入的字符串是否包含指定的子串
|
|fn:containsIngnoreCase()
|測(cè)試輸入的字符串是否包含指定的子串,大小寫不敏感
|
|fn:endsWith()
|測(cè)試輸入的字符串是否以指定的后綴結(jié)尾
|
|fn:escapeXml()
|跳過可以作為XML標(biāo)記的字符
|
|fn:indexOf()
|返回指定字符串在輸入字符串中出現(xiàn)的位置
|
|fn:join()
|將數(shù)組中的元素合成一個(gè)字符串然后輸出
|
|fn:length()
|返回字符串長度
|
|fn:replace()
|將輸入字符串中指定的位置替換為指定的字符串然后返回
|
|fn:split()
|將字符串用指定的分隔符分隔然后組成一個(gè)子字符串?dāng)?shù)組并返回
|
|fn:startsWith()
|測(cè)試輸入字符串是否以指定的前綴開始
|
|fn:substring()
|返回字符串的子集
|
|fn:substringAfter()
|返回字符串在指定子串之后的子集
|
|fn:substringBefer()
|返回字符串在指定子串之前的子集
|
|fn:toLowerCase()
|將字符串中的字符轉(zhuǎn)為小寫
|
|fn:toUpperCase()
|將字符串中的字符轉(zhuǎn)為大寫
|
|fn:trim()
|移除首位的空白符
|
JSP 自定義標(biāo)簽
自定義標(biāo)簽是用戶定義的JSP語言元素琉用。當(dāng)JSP頁面包含一個(gè)自定義標(biāo)簽時(shí)將被轉(zhuǎn)化為servlet堕绩,標(biāo)簽轉(zhuǎn)化為對(duì)被 稱為tag handler的對(duì)象的操作,即當(dāng)servlet執(zhí)行時(shí)Web container調(diào)用那些操作邑时。
JSP標(biāo)簽擴(kuò)展可以讓你創(chuàng)建新的標(biāo)簽并且可以直接插入到一個(gè)JSP頁面奴紧。 JSP 2.0規(guī)范中引入Simple Tag Handlers來編寫這些自定義標(biāo)記。
你可以繼承SimpleTagSupport類并重寫的doTag()方法來開發(fā)一個(gè)最簡單的自定義標(biāo)簽晶丘。
創(chuàng)建"Hello"標(biāo)簽
接下來黍氮,我們想創(chuàng)建一個(gè)自定義標(biāo)簽叫作<ex:Hello>,標(biāo)簽格式為:
<ex:Hello />
要?jiǎng)?chuàng)建自定義的JSP標(biāo)簽浅浮,你首先必須創(chuàng)建處理標(biāo)簽的Java類沫浆。所以,讓我們創(chuàng)建一個(gè)HelloTag類滚秩,如下所示:
//該類需要繼承SimpleTagSupport,并重寫doTag方法
public class HelloTag extends SimpleTagSupport{
@Override
public void doTag() throws JspException, IOException {
JspWriter out = getJspContext().getOut();
out.println("Hello Custom Tag!");
}
}
創(chuàng)建如下標(biāo)簽庫:WEB-INF\custom.tld件缸。
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
<display-name>myTag</display-name>
<tlib-version>1.1</tlib-version>
<short-name>mt</short-name>
<!--該參數(shù)可以當(dāng)作jsp頁面標(biāo)簽引入時(shí)對(duì)應(yīng)的uri參數(shù),根據(jù)此參數(shù)找到該自定義標(biāo)簽.也可以是該文件的路徑-->
<uri>http://com.hb/tld/myTag</uri>
<tag>
<name>Hello</name>
<tag-class>creatMyJspTag.HelloTag</tag-class>
<body-content>empty</body-content>
</tag>
</taglib>
接下來叔遂,我們就可以在JSP文件中使用Hello標(biāo)簽:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- <%@ taglib uri="http://com.hb/tld/myTag" prefix="m" %> --%>
<%@ taglib uri="/WEB-INF/custom.tld" prefix="m" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>main</title>
</head>
<body>
<m:Hello/>
</body>
</html>