Servlet&JSP的那些事兒(二十)

來源:互聯網
上載者:User

JSTL內容實在是有點多,這是第三篇專門討論它的文章了。雖然有點多,但它作為jsp開發中重要的一環,我們還是得耐心的繼續學習。本篇主要論述sql標籤庫,xml標籤庫。

雖然前面講過mvc開發模式,我們通常會將資料庫操作放在作為模型的javabean組件中,但是對於小型,簡單的應用,可能需要在jsp頁面直接編寫訪問資料庫的代碼。jstl提供了sql標籤庫,讓我們更方便的進行資料庫操作。要使用sql標籤庫,還得加上以下語句:

<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>

sql標籤庫包含了<sql:setDataSource>,<sql:query>,<sql:param>,<sql:dateParam>,<sql:update>和<sql:transaction>6個標籤。

<sql:setDataSource>標籤

它主要設定資料來源。其文法格式如下:

<sql:setDataSource dataSource="datasource" url="jdbcurl"[driver="driverClassName"][user="username"][password="password"][var="varName"][scope="{page|request|session|application}"] />

<sql:query>標籤

<sql:query>標籤用於對資料庫進行查詢。它有三種文法格式。

1)無標籤體

<sql:query sql="sqlquery" var="varName"[scope="{page|request|session|application}"] [dataSource="datasource"][maxRows="maxRows"][startRow="startRow"] />

2)有標籤體,在標籤體中執行查詢參數

<sql:query sql="sqlquery" var="varName"[scope="{page|request|session|application}"] [dataSource="datasource"][maxRows="maxRows"][startRow="startRow"] >    <sql:param> action</sql:query>

3)有標籤體,在標籤體中指定查詢語句和查詢參數

<sql:query  var="varName"[scope="{page|request|session|application}"] [dataSource="datasource"][maxRows="maxRows"][startRow="startRow"] >    query optional<sql:param> action</sql:query>

<sql:param>標籤

該標籤主要用於設定sql語句中標記為?的參數的值,類似於PreparedStatement的setXXX()方法的作用。它作為<sql:query>和<sql:update>的子標籤使用。文法格式如下:

<sql:param value="value" />

<sql:dateParam>標籤

該標籤用Date類型的值設定sql語句中標記為?的參數的值。它作為<sql:query>和<sql:update>的子標籤使用。文法格式如下:

<sql:dateParam value="value" [type="{timestamp|time|date}"] />

<sql:update>標籤

該標籤用於執行插入,更新或者刪除語句。它也有三種文法格式,在此給出第一種,其它可參考<sql:query>。文法格式如下:

<sql:update sql="sqlUpdate" [dataSource="dataSource"][var="varName"][scope="{page|request|session|application}"]  />

<sql:transaction>標籤

該標籤用於為<sql:query>和<sql:update>子標籤建立交易處理上下文。其文法格式如下:

<sql:transaction [dataSource="dataSource"] [isolation=isolationlevel]>    <sql:query> and <sql:update> statements</sql:transaction>isolationlevel = "read_committed | read_uncommitted | repeatable_read | serializable"

xml標籤庫

xml讓我們無需瞭解DOM和SAX,也可以對xml文檔進行操作。當然了,要使用它,也必須加上如下語句:

<%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>

xml標籤庫基於XPath語言,我們可以在標籤的select屬性中使用XPath運算式(需要配置Xalan處理器,將xalan.jar複製到web應用程式的WEB-INF\lib目錄下)。

XPath引擎支援的運算式文法

運算式 映射
$foo pageContext.findAttribute("foo")
$param:foo request.getParameter("foo")
$header:foo request.getHeader("foo")
$cookie:foo 映射cookie的值到名字foo
$initParam:foo application.getInitParameter("foo")
$pageScope.foo pageContext.getAttribute("foo",PageContext.PAGE_SCOPE)
$requestScope.foo pageContext.getAttribute("foo",PageContext.REQUSET_SCOPE)
$sessionScope.foo pageContext.getAttribute("foo",PageContext.SESSION_SCOPE)
$application.foo pageContext.getAttribute("foo",PageContext.APPLICATION_SCOPE)
通過這些映射,jsp的範圍變數、請求參數、請求前序和cookies,還有上下文初始化參數都可以很容易在XPath運算式中使用。例如:/foo/bar[@x=$param:name]表示尋找foo元素節點下的bar子項目節點,並且bar元素的屬性x的值,等於http請求參數name的值。

xml標籤庫中的標籤按照功能可分為三類,xml核心操作,xml流程式控制制操作和xml轉換操作。

核心操作

xml核心操作包括<x:param>,<x:out>和<x:set>這三個標籤。

<x:param>標籤

<x:param>用於解析xml文檔。文法有兩種。

1)通過string或Reader對象來指定xml文檔

<x:parse doc="XMLDocument" {var="var" [scope="scope" varDom="var" [scopeDom="scope"]]}[systemId = "systemid"][filter="filter"] />

2)通過標籤體來指定XML文檔

<x:parse doc="XMLDocument" {var="var" [scope="scope" varDom="var" [scopeDom="scope"]]}[systemId = "systemid"][filter="filter"] >XML document  to parse</x:parse>

scope的取值和之前的一樣。

<x:out>標籤

該標籤用於計算一個XPath運算式,並將計算的結果輸出到當前的JspWriter對象。該標籤的功能類似於<%=expression%>,或者核心標籤庫的<c:out>。文法格式如下:

<x:out select="XPathExpression" [escapeXml]="{true | false}" />

<x:set>標籤

該標籤用於計算一個XPath運算式,並將計算的結果儲存到一個範圍變數中。文法格式如下:

<x:out select="XPathExpression" [var="varName"]

[scope="{page|request|session|application}"] />

流程式控制制

包括<x:if>、<x:choose>、<x:when>、<x:otherwise>和<x:forEach>標籤。類似於核心庫中的<c:if>,<c:choose>,<c:forEach>標籤。不同的是,xml流程式控制制操作應用的是XPath運算式。

<x:if>標籤

標籤文法格式分為兩種。有標籤體和沒有標籤體。格式如下:

<x:if select="XPathExpression" [var="varName"][scope="{page|request|session|application}"] />

<x:choose>標籤

該標籤和<x:when>,<x:otherwise>一起實現互斥條件的執行。文法格式如下:

<x:choose>   body content<x:when> and <x:otherwise></x:choose>

<x:when>標籤

文法格式如下:

<x:when select="XPathExpression" >body content</x:when>

<x:otherwise>標籤

該標籤文法格式如下:

<x:otherwise select="XPathExpression" >conditional block</x:otherwise>

<x:forEach>標籤

該標籤計算一個給定的XPath運算式,根據結果重複執行它的標籤體。文法格式如下:

<x:forEach var="varName" select="XPathExpression"  varStatus="varStatusName" begin="begin" end="end" step="step">  本體內容  </x:forEach> 

轉換操作

xml轉換操作支援XSLT樣式表轉換XML文檔,包括<x:transform>和<x:param>標籤。

<x:transform>標籤

它使用指定的XSLT樣式轉換XML文檔。其文法格式有三種。

1)沒有標籤體

<x:transform doc="XMLDocument" xslt="XSLTStyleSheet" [docSystemId="XMLsystemId"][xsltSystemId="[xsltSystemId"][var="varName"][scope="{page|request|session|application}"][result="resultObject"] />

2),3)的格式請參考結合<sql:query>即可推斷出來。

<x:param>標籤

該標籤設定轉換的參數,在<x::transform>標籤中嵌套使用。文法格式為:

<x:param name="name" value="value" />

轉載請註明出處:http://blog.csdn.net/iAm333

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.