




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
8.1JSTL簡介JSTL(JSPStandardTagLibrary)
:JSP標準標記庫.JSTL目前已有三個版本:Standard-1.0Taglib、Standard-1.1Taglib、jstl-1.2Taglib。Standard-1.0Taglib(JSTLl.0)支持Servlet2.3和JSP1.2規(guī)范,Tomcat4支持這些規(guī)范
Standard-1.1Taglib(JSTLl.1)支持Servlet2.4和JSP2.0規(guī)范,Tomcat5支持這規(guī)范
JSTL1.2支持servlet2.5和JSP2.1的規(guī)范,
Tomcat6支持這規(guī)范
8.2Core標記庫Core標記庫一共有14個標記,分4類:(1)通用標記:<c:out>、<c:set>、<c:remove>、<c:catch>;(2)條件處理標記:<cif>、<c:choose>、<c:when>、<c:otherwise>;(3)循環(huán)控制標記:<c:forEach>、<c:forTokens>.;(4)URL相關標記:<c:import>、<c:url>、<credirect>、<c:param>。8.2.1通用標記1.<c:out>標記:<c:outvalue="expression"default="expression"escapeXml="boolean"/>2.<c:set>標記<c:setvalue="expression"var="varname"scope="scope"/>3.<c:remove>標記<c:removevar="name"scope="scope"/>4.<c:catch>標記<c:catchvar="name">value:輸出到頁面的數(shù)據(jù)??梢允荅L表達式或常量
var:被賦值的變量名
;Value:值的信息;scope:變量的作用范圍
源文件:c_out.jsp<%@pagecontentType="text/html;charset=gb2312"language="java"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><html><head><title>JSTL:c:out的使用</title></head><bodybgcolor="#FFFFFF"><hr><c:setvar="sessionAttr"value="sessionValue"scope="session"/><c:setvar="pageAttr"value="pageValue"scope="page"/><c:setvar="requestAttr"value="requestValue"scope="request"/><c:outvalue="以下輸出的是前面設置的屬性<br>"escapeXml="false"/><c:outvalue="${sessionAttr}"/><br><c:outvalue="${pageAttr}"/><br><c:outvalue="${requestAttr}"/><c:outvalue="${test_nodef}"default="沒有test_nodef這個變量"/><br></body></html>8.2.1通用標記-案例8.2.2條件處理1.<c:if>標記<c:iftest="testCondition"var="varName"[scope="page|request|session|application"]>Bodycontent</c:if>2.<c:choose>標記、<c:when>標記、<c:otherwise>
<c:choose>
<c:whentest="testCondition"
>bodycontent
</c:when>…
<c:otherwise>bodycontent
</c:otherwise>
</c:chosse>test:測試條件;var:保存判斷結果
<jsp:useBeanid="date"class="java.util.GregorianCalendar"/><c:setvar="time"value="<%=date.get(GregorianCalendar.AM_PM)%>"/><c:iftest="${time==0}">
早上好</c:if><c:iftest="${time==1}">
下午好</c:if>1.<c:forEach>標記語法格式1:遍歷集合對象中的所有成員:<c:forEachitems="collection”[var="varName"][varStastus="varStatusNarne"]>bodycontent</c:forEach>語法格式2:循序指定的次數(shù):<c:forEach[var="varName”][varStastus="varStatusName"][begin="begin"end="end"][step="step"]>bodycontent<c:forEarh>8.2.3循環(huán)控制items:進行循環(huán)的集合
var:做循環(huán)的對象變量名
varStatus:顯示循環(huán)狀態(tài)的變量源程序:c_forEach.jsp<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><html><head><title>JSTL::c:forEach的使用</title></head><%ArrayListarrayList=newArrayList();ArrayList.add("aa");ArrayList.add("bb");
arrayList.add
("cc"
)
;request.getSession().setAttribute("arrayList",arrayList);%><body>
<c:forEachitems="${sessionScope.arrayList}"var="temp">${temp}</c:forEach></body></html>8.2.3循環(huán)控制-案例1.<c:url>標記:用于URL重寫<c:urlvalue="expression"[context="context"][var="varName"]
[scope="page|request|session|application"]>[<c:paramname="expression"value="expression"/>]</c:url>8.2.4URL標記2.<c:import>標記:類似JSP的<jsp:incluse>動作<c:importurl="url"[charEncoding="charEncoding"]>[<c:paramname="expression"value="expression"/>]</c:import>3.<c:redirect>標記:相當于response.setRedirect的作用
<c:redirecturl="value“>[<c:paramname="expression"value="expression"/>]</c:redirect>value:用來指定基本URL
var:存儲URL的變量名
url:需要導入頁面的URL
url:需要重定向的URL
8.3.I18N標記庫I18N標記庫就是用于在JSP頁面中做國際化的動作。該標記庫中的標記一共有12個,分為兩類,如下所示。(1)國際化標記:<fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:param>、<fmt:requestEncoding>。(2)格式化標記:<fmt:timeZone>、<fmt:setTimeZone>、<fmt:formatNumber>、<fmt:parseNumber>、<fmt:formatDate>、<fmt:parseDate>。8.3.1國際化標記1.<fmt:setLocale>標記:用于設置本地化環(huán)境<fmt:setLocalevalue="locale"[scope="{page|request|session|application}"]/>locale
:是命名該語言環(huán)境的名稱。語言環(huán)境名稱是這樣組成的:小寫的兩字母表示ISO語言代碼,后面可以跟下劃線或連字符以及大寫的兩字母以表示ISO國家或地區(qū)代碼。scope:用來指定value的作用域<fmt:setLocalevalue="zh_TW"/>表示設置本地環(huán)境為繁體中文(中國臺灣省)。<fmt:setLocalevalue="zh_CN"scope=”session”/>表示設置本地環(huán)境為簡體中文。8.3.1國際化標記2.<fmt:bundle>標記:用于資源配置文件的綁定<fmt:bundlebasename="basename"[prefix="prefix"]>bodycontent</fmt:bundle>3.<fmt:setBundle>標記<fmt:setBundlebasename="basename"[var="varName"][scope="{page|request|session|application}"]/>basename:資源配置文件的指定,只需要指定文件名而無須擴展名。prefix:消息前綴
它與<fmt:bundle>的區(qū)別在于,<fmt:bundle>標記將資源配置文件綁定在標記體中顯示,<fmt:setBundle>標記則允許將資源配置文件保存為一個變量
8.3.1國際化標記4.<fmt:message>標記:顯示資源配置文件中定義的信息<fmt:messagekey="messageKey"[bundle="resourceBundle'][var=="varName"][scope='{page|request|session|application}"]><fmt:paramvalue="paramValue"/>]</fmt:message>5.<fmt:param>標記<fmt:paramvalue="paramValue"/>key:資源配置文件的“鍵”指定var:將顯示信息保存為一個變量(如果沒有指定var屬性,顯示信息直接輸出)bundle:若使用<fmt:setBundle>保存了資源配置文件,該屬性就可以從保存的資源配置文件中進行查找6.<fmt:requestEncoding>標記<fmt:requestEncodingvalue="charsetName"/>
8.3.1國際化標記-案例applicationMpertieslogin.userName=userNamelogin.password=passwordlogin.title=loginlogin.submit=loginlogin.cancel=cancel基本資源文件applicationMessage_zh_CN.propertieslogin.userName=\u7528\u6237\u540Dlogin.password=\u5BC6\u7801login.title=\u767B\u5F55login.submit=\u63D0\u4EA4login.cancel=\u53D6\u6D88中文資源文件applicationMessage.txtlogin.userName=用戶名login.password=密碼login.title=登錄login.submit=登錄login.cancel=取消在命令行窗口,輸入下面的命令:D:\>native2ascii.exeapplicationMessage.txtapplicationMessage_zh_CN.properties<fmt:setBundlebasename="applicationMessage"var="applicationBundle"/><html><head><title>
<fmt:messagekey="login.title"bundle="${applicationBundle}"/></title>
</head><body><formaction=""><fmt:bundlebasename="applicationMessage"prefix="login."><fmt:messagekey="userName"/><inputtype="text"name="userName"><p>
<fmt:messagekey="password"/><inputtype="password"name="password"><p><inputtype="submit"value="<fmt:messagekey='submit'/>"><inputtype="reset"value="<fmt:messagekey='submit'/>"></fmt:bundle></form></body></html>8.3.1國際化標記-案例添加<fmt:setLocalevalue=“en”/>標記或在非中文客戶端訪問的結果添加<fmt:setLocalevalue=“zh”/>標記或在中文客戶端訪問的結果8.3.1國際化標記-案例8.3.2格式化標記1.<fmt:timeZone>標記:用于設定時區(qū)<fmt:timeZonevalue="timeZone">bodycontent</fmt:timeZone>2.<fmt:setTimeZone>標記<fmt:setTimeZonevalue="timeZone"[var="varName"][scope="{page|request|session|application}"]/>timeZone:時區(qū)代碼與<fmt:timeZone>的區(qū)別是:<fmt:timeZone>標記將使得在其標記體內的工作可以使用該時區(qū)設置,<fmt:setTimeZone>標記則允許將時區(qū)設置保存為一個變量,在之后的工作可以根據(jù)該變量來進行3.<fmt:formatNumber>標記<fmt:formatNumbervalue="numericValue"[type="{number|currency|percent}"][pattern="customPattern"][currencyCode="currencyCode"][currencySymbol="currencySymbol"][groupingUsed="{true|false}"][maxIntegerDigits="maxIntegerDigits"][minIntegerDigits="minIntegerDigits][maxFractionDigits="maxFractionDigits"][minFractionDigits="minFractionDigits"][var="varName"][scope="{page|request|session|application}]/>8.3.2格式化標記type:取值為number、currency、percent之一
pattern:格式化模式
例如:<fmt:formatNumbervalue="1000.888"type="currency"var="money"/>${money}該結果將被保存在money變量中,將根據(jù)Locale環(huán)境顯示當?shù)氐呢泿鸥袷?。如果沒有設置Locale,在中文客戶端瀏覽器中的結果為:¥1,000.89符號
意義0
一個數(shù)位#
一個數(shù)位,前導零和追尾零不顯示.
小數(shù)點分割位置,
組分隔符的位置-
負數(shù)前綴%
用100乘,并顯示百分號pattern:格式化模式
例:<fmt:formatNumbervalue="123456.7"pattern="#,#00.0#"/>該例顯示結果為:123,456.7。8.3.2格式化標記4.<fmt:parseNumber>標記<fmt:parseNumbervalue="numericValue"[type="{number|currency|percent}"][pattern="customPattern"][parseLocale="parseLocale"][integerOnly="{true|false}"][var="varName"][scope="{page|request|session|application}"]/>例如:<fmt:parseNumbervalue="15%"type="percent"var="num"/>解析之后的結果為0.15。8.3.2格式化標記5.<fmt:formatDate>標記:用于格式化日期<fmt:formatDatevalue="date"[type="{time|date|both}"][dateStyle="{default|short|medium|long|full}"][timeStyle="{default|short|medium|long|full)"][pattern="customPattern"][timeZone="timeZone"][var="varName"][scope="{page|request|session|application}"]/>例如:
<%request.setAttribute("date1",newDate());%>
<fmt:formatDatevalue="${date1}"pattern="yyyy-MM-ddhh:mm:ss"type="date"dateStyle="long"/>注:時間pattern表示方法:hh:mm:ss按12小時制顯示,HH:MM:SS按24小時制顯示。8.4SQL標記庫1.<sql:setDataSource>標記用于設置數(shù)據(jù)源。有兩種語法格式,一種是JNDI數(shù)據(jù)源(由WEB服務器提供),一種是JDBC數(shù)據(jù)源。語法格式1-JNDI數(shù)據(jù)源:
<sql:setDataSourcedataSource="dataSource"[var="varName"][scope="scope"]/>語法格式2-JDBC數(shù)據(jù)源:
<sql:setDataSourceurl="jdbcUrl"driver="driverClassName"user="userName"password="password"[var="varName"][scope="scope"]/>dataSource:為WEB服務器中配置的數(shù)據(jù)源(參考例8-9)
driver:jdbc驅動url:數(shù)據(jù)庫的URLuser:用戶password:密碼8.4SQL標記庫2.<sql:query>標記:用于查詢數(shù)據(jù)庫語法格式l:<sql:querysql="sqlQuery"var="varName"[scope="scope"][dataSource="dataSource"][maxRows="maxRows"][startRow="startRow"]/>語法格式2:<sql:queryvar="varName"[scope="scope"][dataSource="dataSource"][maxRows="maxRows"][startRow="startRow"]>query<sql:param></sql:query>dataSource:數(shù)據(jù)來源sql:查詢語句var:查詢結果保存變量該語法可以通過<sql:param>給SQL語句傳遞參數(shù)8.4SQL標記庫3.<sql:param>標記:用于設置SQL預處理語句中的參數(shù)<sql:paramvalue="value"/>或:<sql:param>value</sql:param>4.<sql:dateParam>標記<sql:dateParam>標記用于向SQL語句傳遞java.util.Date類型的參數(shù)。語法格式如下:<sql:dateparamvalue="value"[type="date|time|timestamp"]/>Value:表示參數(shù)值只用于傳日期參數(shù)8.4SQL標記庫5.<sql:update>標記:用于更新數(shù)據(jù)庫它的標記體內可以是一句SQL更新語句。其使用和<sql:query>標記沒有什么不同6.<sql:transaction>標記:用于數(shù)據(jù)庫的事務處理<sql:transaction[dataSource="dataSource"][isolation="read_committed|read_uncommitted|repeatable_read|serializable"]<sql:query>or<sql:update><sql:transaction>8.4SQL標記庫-案例例8-9:利用SQL標記查詢數(shù)據(jù)庫數(shù)據(jù)(1)把MySQL的JDBC驅動拷貝到Tomcat安裝目錄\common\lib目錄下。(2)配置數(shù)據(jù)庫連接池:在Tomcat安裝目錄/conf目錄下,找到server.xml,并用記事本或寫字板打開,在其中添加下面這段代碼:<Contextpath="/JstlTest"docBase="JstlTest"debug="5"reloadable="true"crossContext="true"><Resourcename="myds"auth="Container"type="javax.sql.DataSource"maxActive="5"maxIdle="3"maxWait="10000"username="root"password="root"driverClassName="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/mytest?autoReconnect=true"/></Context>Tomcat數(shù)據(jù)庫連接池配置(3)新建一個JSP文件,文件名為sqlQuery.jsp。代碼如下:8.4SQL標記庫-案例<%@pagepageEncoding="gb2312"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><%@taglibprefix="sql"uri="/jsp/jstl/sql"%><html><head><title>sqlquery</title></head><body><h1>學生信息瀏覽</h1>
<sql:setDataSourcedataSource="myds"var="mysql"/>
<sql:querysql="selectsno,snamefromstudents"var="rs"dataSource="${mysql}"/><tableborder="1"width="200px"><tr><th>學號</th><th>姓名</th></tr><c:forEachvar="row"items="${rs.rows}">
<tr><td>${row.sno}</td><td>${row.sname}</td></tr></c:forEach></table></body></html>8.5XML標記庫XMLprocessing標記庫為程序設計者提供了基本的對XML格式文件的操作。該標記庫中一共有10個標記,分為3類。
核心操作標記:<x:parse>、<x:out>、<x:set>。流程控制標記:<x:if>、<x:choose>、<x:when>、<x:otherwise>、<x:forEach>。轉換操作標記:<x:transform>、<x:param>。8.5.1核心操作1.<x:parse>標記:用于解析XML文件<x:parsedoc="XMLDocument"[var="varName"[scope="scope"]]/>doc:源XML的內容var:將解析后的XML保存在該屬性所指定的變量中例如:<c:importvar="xmlFile"url="/SampleXmLxml"/><x:parsevar="parseFile"doc="${xmlFile}"/><c:import>標記將源XML文件的內容保存在xmlFile變量中.<x:parse>標記根據(jù)xmlFile變量的值解析SampleXml.xml。并將解釋后的結果保存到
parseFile變量中8.5.1核心操作2.<x:out>標記:從<x:parse>標記解析后保存的變量中取得需要的XML文件內容,并顯示在頁面上.
<x:outselect="xPathExpression"[escapeXml="{true|false}"]/>select:XPath表達式escapeXml:當特殊字符如<、>、&、‘、“等出現(xiàn)在取得的結果字符串中時,是否將以轉義字符來替換3.<x:set>標記:將某個源XML中元素的實體內容或屬性保存到一個變量中去<x:setselect="xPathExpression"var="varName"[scope="scope"]/>8.5.1核心操作-案例例8-10
:<x:parse>與<x:out>標記應用示例
book.xml<?xmlversion="1.0"encoding="utf-8"?><xml-body><books><book><title>cobol</title><author>roy</author></book><book><title>java</title><author>herbert</author></book><book><title>c++</title><author>robert</author></book></books></xml-body>xmlTagTest.jsp<%@pagepageEncoding="utf-8"%><%@taglibprefix="c"uri="/jsp/jstl/core"%><%@taglibprefix="x"uri="/jsp/jstl/xml"%><html><head><title>TEST</title></head><body>
<c:importurl="/book.xml"var="xmlFile"/>
<x:parsevar="parseXmlFile"doc="${xmlFile}"/>name:<x:outselect="$parseXmlFile/xml-body/books/book/author"/><br>
</body></html>8.5.2流程控制1.<x:if>標記:允許由XPath的boolean()函數(shù)得到的判斷結果來判斷是否顯示其標記所包含的內容<x:ifselect=“XPathExpression”var="varName”[scope=“scope"]>Bodycontent</x:if>例如:<c:setvar="s"value="roy"></c:set><c:importurl="/book.xml"var="xmlFile"/><x:parsevar="parseXmlFile"doc="${xmlFile}"/><x:ifselect="$parseXmlFile/xml-body/books/book/author=$s"><x:outselect="$parseXmlFile/xml-body/books/book/title"/></x:if>8.5.2流程控制2.<x:choose>標記<x:choose>
bodycontent(<when>and<otherwise>)</x:chosse>3.<x:when>標記<x:whenselect=“XPathExpression”>bodycontent</x:when>4.<x:otherwise>標記<x:othwise>bodycontent</x:otherwise>8.5.2流程控制5.<x:forEach>標記:對XML文件中同一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 個人委托理財合同樣本
- 公務租車合同標準文本
- PLC編程合同樣本
- 人工服務購銷合同標準文本
- 上海屋頂防水工程合同標準文本
- 公司與油漆合同樣本
- 鄉(xiāng)鎮(zhèn)土地征用合同樣本
- aia合同標準文本1997版
- 其他公司合同樣本
- 代理銷售居間合同樣本
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
- 詩歌題材實用課件七:談禪說理
- 普華永道財務管理與集團內部控制課件
- 小學教科版四年級下冊科學《種子長出了根》教學反思
- 常用CMYK色值表大全
- 消化道出血護理ppt(共17張PPT)
- 珠三角一年斷指四萬
- 2022版義務教育(數(shù)學)課程標準(含2022年修訂部分)
- 快板?繞口令?《玲瓏塔》
- 臺灣民法典目錄
- 8.8級螺栓上海紅本價
評論
0/150
提交評論