Jsp(五)

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>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末他炊,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子已艰,更是在濱河造成了極大的恐慌痊末,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哩掺,死亡現(xiàn)場(chǎng)離奇詭異凿叠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門盒件,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹬碧,“玉大人,你說我怎么就攤上這事炒刁《鞴粒” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵翔始,是天一觀的道長罗心。 經(jīng)常有香客問我,道長城瞎,這世上最難降的妖魔是什么渤闷? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮脖镀,結(jié)果婚禮上飒箭,老公的妹妹穿的比我還像新娘。我一直安慰自己蜒灰,他們只是感情好弦蹂,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著卷员,像睡著了一般盈匾。 火紅的嫁衣襯著肌膚如雪腾务。 梳的紋絲不亂的頭發(fā)上毕骡,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音岩瘦,去河邊找鬼未巫。 笑死,一個(gè)胖子當(dāng)著我的面吹牛启昧,可吹牛的內(nèi)容都是我干的叙凡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼密末,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼握爷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起严里,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤新啼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后刹碾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燥撞,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了物舒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片色洞。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冠胯,靈堂內(nèi)的尸體忽然破棺而出火诸,到底是詐尸還是另有隱情,我是刑警寧澤涵叮,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布惭蹂,位于F島的核電站,受9級(jí)特大地震影響割粮,放射性物質(zhì)發(fā)生泄漏盾碗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一舀瓢、第九天 我趴在偏房一處隱蔽的房頂上張望廷雅。 院中可真熱鬧,春花似錦京髓、人聲如沸航缀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽芥玉。三九已至,卻和暖如春备图,著一層夾襖步出監(jiān)牢的瞬間灿巧,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工揽涮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抠藕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓蒋困,卻偏偏與公主長得像盾似,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子雪标,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • JSP 標(biāo)準(zhǔn)標(biāo)簽庫(JSTL) JSP標(biāo)準(zhǔn)標(biāo)簽庫(JSTL)是一個(gè)JSP標(biāo)簽集合零院,它封裝了JSP應(yīng)用的通用核心功能...
    FTOLsXD閱讀 328評(píng)論 1 2
  • JSP 基本結(jié)構(gòu)JSP 頁面組成:模板文本(HTML,XML,純文本),JSP 元素村刨;JSP 元素:腳本元素告抄,指令...
    jslancer閱讀 847評(píng)論 0 11
  • 表達(dá)式語言(Expression Language 簡稱EL) EL最初是定義在JSTL1.0規(guī)范中,在JSP2....
    清楓_小天閱讀 825評(píng)論 0 4