?????? URL相關的標簽
<c:import>
語法1:資源的內容使用String對象向外暴露
<c:import url="url" [context="context"]
[var-"varName"][scope="{page|request|session|application}"]
[charEncoding="charEncoding"]>
optional body content for <c:param> subtags
</c:import>
語法2:資源的內容使用Reader對象向外暴露
<c:import url="url" [context="context"]
varReader="varReaderName"
[charEncoding="charEncoding"]>
body content where varReader is consumed by another action
</c:import>
例1:??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
<h3>絕對路徑 URL</h3>
<blockquote>
<ex:escapeHtml>
?? <c:import url=">
</ex:escapeHtml>
</blockquote>
<h3>相對路徑 URL</h3>
<blockquote>
<ex:escapeHtml>
?? <c:import url="beimport.jsp"/>
</ex:escapeHtml>
</blockquote>
<h3>encode:</h3>
<a href=<c:url value="beimport.jsp"><c:param name="userName" value="hellking"/></c:url>>--></a>
相當于<--jsp:include file=""/>
<c:import var="myurl" url=">
?? <c:out value="${myurl}"/>
<c:import var="myurl2" url="beimport.jsp"/>
?? <c:out value="${myurl2}"/>
</pre>
</blockquote>
<h3>傳遞參數到指定的URL</h3>
<blockquote>
?? <c:import url="beimport.jsp" charEncoding="gb2312">
?? <c:param name="userName" value="hellking"/>
</c:import>??
<c:redirect>
把客戶的請求重定向到另一個資源
語法1:沒有BODY時.
<c:redirect url="value" [context="context"]/>
例1:
<c:url value="beimport.jsp" var="test"><c:param name="userName" value="hellking"/></c:url>
<c:redirect url="${test}"/>
語法2:在BODY中指定查詢的參數.
<c:redirect url="value" [context="context"]/>
<c:param>subtags
</c:redirect>
例1:
<c:redirect url="beimport.jsp">
<c:param name="userName" value="hellking"/>
</c:redirect>
<c:url>
用于構造URL,主要的用途是URL重寫.
語法1:No Body.
<c:url value="value" [context="context"]
[var="varName"][scope="{page|request|session|application}"]/>
例1:
<c:url value="beimport.jsp"/>
語法2:Body.
<c:url value="value" [context="context"]
[var="varName"][scope="{page|request|session|application}"]>
<c:param>subtags
</c:url>
例2:
<c:url?? var="myurl" value="beimport.jsp" scope="session">
<c:param name="userName" value="hellking"/>
</c:url>
<c:out value="${myurl}"/>
<c:param>
在<c:import>.<c:url>.<c:redirect>中添加請求的參數.
語法1:參數的值使用value屬性指定.
<c:param name="name" value="value"/>
語法2:參數的值在標簽的BODY中指定.
<c:param name="name">
parameter value
</c:param>
?????? 迭代標簽
<c:forEach>
在一個包括一系列對象的Collection中迭代計算它的BodyContent,或者重復迭代固定的次數.
語法1:在Collection中迭代.
<c:forEach [var="varName"] items="collection"
[varStatus="varStatusName"]?? //這是迭代狀態
[begin="begin"][end="end"][step="step"]>
body content
</c:forEach>
例1:迭代Collection
<table border=1>
<c:forEach var="users" items="${users}">
?? <tr>
?? <td><c:out value="${users.userName}"/></td>
?? <td><c:out value="${users.password}"/></td>
?? <td><c:out value="${users.age}"/></td>
?? </tr>
</c:forEach>
</table>
例2:other迭代
<%
int[] myIntArray=new int[]{1,2,3,4,5,65,34};
String[] myStringArray=new String[]{"I ","am ","a ","Java","fans"};
Vector v=new Vector();
v.add("this");
v.add("is");
v.add("myEnumeration");
v.add("!");
Enumeration myEnumeration=v.elements();
HashMap myNumberMap=new HashMap();
myNumberMap.put("hellking","23");
myNumberMap.put("guest","23");
myNumberMap.put("guest2","223");
myNumberMap.put("guest3","232");
request.setAttribute("myIntArray",myIntArray);
request.setAttribute("myStringArray",myStringArray);
request.setAttribute("myEnumeration",myEnumeration);
request.setAttribute("myNumberMap",myNumberMap);
%>
<h4>Array of primitives (int)</h4>
<c:forEach var="i" items="${myIntArray}">
?? <c:out value="${i}"/> ?
</c:forEach>
<h4>Array of objects (String)</h4>
<c:forEach var="string" items="${myStringArray}">
?? <c:out value="${string}"/><br>
</c:forEach>
<h4>myEnumeration (warning: this only works until myEnumeration is exhausted!)</h4>
<c:forEach var="item" items="${myEnumeration}" begin="0" end="5" step="1">
?? <c:out value="${item}"/><br>
</c:forEach>
<h4>Properties (Map)</h4>
<c:forEach var="prop" items="${myNumberMap}" begin="1" end="5">
?? <c:out value="${prop.key}"/> = <c:out value="${prop.value}"/><br>
</c:forEach>
<h4>String (Common Separated Values)</h4>
<c:forEach var="token" items="red,blue,green">
?? <c:out value="${token}"/><br>
</c:forEach>
語法2:迭代固定的次數.
<c:forEach [var="varName"]
[varStatus="varStatusName"]
begin="begin" end="end"[step="step"]>
body content
</c:forEach>
例1:
<c:forEach var="i" begin="1" end="10">
?? <c:out value="${i}"/> -->
</c:forEach>
例2:<h4>第二種迭代:1 to 10,step=3</h4>
<c:forEach var="i" begin="1" end="10" step="3">
?? <c:out value="${i}"/> -->
</c:forEach>
例3:迭代狀態
?? <td><c:out value="${status.index}"/></td>
?? <td><c:out value="${status.count}"/></td>
?? <td><c:if test="${status.first}">
????? <b></c:if>
?????? <c:out value="${status.first}"/></b></td>
?? <td><c:if test="${status.last}">
????? <i> </c:if>
????? <c:out value="${status.last}"/></i></td>????
?? </tr>
<c:forTokens>
用于處理TokenString的迭代,可以指定一個或者多個分隔符.
語法:
<c:forTokens items="stringOfTokens" delims="delimiters"
[var="varName"]
[varStatus="varStatusName"]
[begin="begin"][end="end"][step="step"]
body content
</c:forTokens>
例:
<h4>使用 '|' 作為分割符</h4>
<c:forTokens var="token" items="blue,red,green|yellow|pink,black|white"
?????????????? delims="|">
?? <c:out value="${token}"/> ©
</c:forTokens>
<h4>使用 '|'和',' 作為分割符</h4>
<c:forTokens var="token" items="blue,red,green|yellow|pink,black|white"
?????????????? delims="|,">
?? <c:out value="${token}"/> ©
</c:forTokens>
<h4>使用 '-' 作為分割符</h4>
<c:forTokens var="token" items="blue--red--green--yellow--pink--black--white"
?????????????? delims="--">
?? <c:out value="${token}"/> ©
</c:forTokens>
?????? 一般用途
輸出
<c:out value="&{XXX}" default="這個值不存在">
設置一個變量
<c:set>
例:設置一個javaBean的屬性<c:set value="hk2" target="${user}" property="userName"/>
刪除某個變量或者屬性
<c:remove var="${XXX}" [scope="{page|request|...}"]>
捕獲由嵌套在它里面的標簽拋出的異常
<c:catch [var="varName"]>
nested actions
</c:catch>
?????? 條件標簽
<c:if>
語法1:無Body的情況
<c:if test="testCondition"
var="varName" [scope="{page|request|session|application}"]/>
例:
<c:if test="${user.age<18}">
對不起,你還的年齡過小,不能范圍這個網頁◎!
</c:if>
語法2:有Body的情況
<c:if test="testCondition"
var="varName" [scope="{page|request|session|application}"]>
body content
</c:if>
<c:choose>?? <c:when> <c:otherwise>
例:
<c:choose>
???? <c:when test="${user.age <=18}">
?????? <font color="blue">
???? </c:when>
???? <c:when test="${user.age<=30&&user.age>18}">
?????? <font color="red">
???? </c:when>
???? <c:otherwise>
?????? <font color="green">
???? </c:otherwise>
?? </c:choose>
你的年齡是:<c:out value="${user.age}"/>
注意,它的Body內容只能由以下的元素構成:
空格.
0個或者多個<when>子標簽,<when>必須在<otherwise>標簽之前出現.
0個或者多個<otherwise>子標簽.
?????? 數據庫相關
QUERY標簽
語法1?? 無SQL參數
<sql:query sql="sqlQuery"
var="varName"
[scope="{page|request|session|application}"]
[dataSource="dataSource"]
[maxRows="maxRows"]
[startRow="startRow"]>
SQL
</sql:query>
例1:
<sql:query var="query" dataSource="${example}">
SELECT * FROM contact
</sql:query>
<table border="1">
?? <c:forEach var="row" items="${qurey.rows}">
?? <tr>
?????? <td>Name:<c:out value="${row[0]}"/></td>
?????? <td>mobile:<c:out value="{row.mobile}"/></td>
?? </tr>
?? </c:forEach>
</table>
<hr>
例2:
<sql:query var="result" dataSource="mbq">
select?? code, curprice, openprice, highprice, lowprice,?? balanceprice, reservecount,totalamount,curamount, openamount,
closeamount,?? reservechange, totalmoney,?? buyprice1, sellprice1, buyamount1, sellamount1, buyprice2, sellprice2, buyamount2,
sellamount2, buyprice3, sellprice3, buyamount3, sellamount3, buyprice4, sellprice4, buyamount4, sellamount4, buyprice5,
sellprice5, buyamount5, sellamount5, outamount, inamount, time,yesterbalanceprice,closeprice from currentdata WHERE Code <>
'SYS' order by code
</sql:query>代碼 現價 開盤 最高 最低 平均 訂貨量 成交量
<c:forEach var="row" items="${result.rowsByIndex}">${row[0]} ${row[1]} ${row[2]} ${row[3]} ${row[4]}
${row[5]} ${row[6]} ${row[7]}
</c:forEach>
語法2?? 有query參數
<sql:query sql="sqlQuery"
var="varName"
[scope="{page|request|session|application}"]
[dataSource="dataSource"]
[maxRows="maxRows"]
[startRow="startRow"]>
[<sql:param>""]
</sql:query>
例1:變量傳入
<c:set var="aa">
GX0511A
</c:set>
<sql:query var="result" dataSource="mbq" sql="select * from currentdata WHERE?? code=? order by code">
?? <sql:param>
??? ${aa}
?? </sql:param>
</sql:query>代碼 現價 開盤 最高 最低 平均 訂貨量 成交量
<table border="1">
<c:forEach var="row" items="${result.rowsByIndex}">
<tr>
<td>Name: ${row[0]} </td><td>2:${row[1]}</td> <td>3:$10:02 2005-11-17{row[2]}</td>
</tr>
<tr>
<td>${row[3]}</td><td> ${row[4]}</td><td>${row[5]}</td><td>${row[6]}</td><td>${row[7]}</td>
</tr>
</c:forEach>
</table>
語法3 有query,且query在body中.
<sql:query var="varName"
[scope="{page|request|session|application}"]
[dataSource="dataSource"]
[maxRows="maxRows"]
[startRow="startRow"]>
query
[<sql:param>""]
</sql:query>
例1:值傳入
<sql:query var="result" dataSource="mbq">
select * from currentdata WHERE?? code=? order by code
?? <sql:param value="GX0511A"/>
</sql:query>代碼 現價 開盤 最高 最低 平均 訂貨量 成交量
<table border="1">
<c:forEach var="row" items="${result.rowsByIndex}">
<tr>
<td>Name: ${row[0]} </td><td>2:${row[1]}</td> <td>3:$10:02 2005-11-17{row[2]}</td>
</tr>
<tr>
<td>${row[3]}</td><td> ${row[4]}</td><td>${row[5]}</td><td>${row[6]}</td><td>${row[7]}</td>
</tr>
</c:forEach>
</table>
UPDATA標簽
語法1
<sql:update sql="sqlUpdate"
[dataSource="dataSource"]
[var="varName"][scope="{page|request|session|application}"]/>
例1
<sql:update var="update2" sql="insert into users values('測試','9999',1,'test')"
dataSource="jdbc/quickdb2">
</sql:update>
語法2
<sql:update sql="sqlUpdate"
[dataSource="dataSource"]
[var="varName"][scope="{page|request|session|application}"]>
<sql:param>actions
</sql:update>
例1
<sql:update var="update2" sql="delete from users where username=?" dataSource="jdbc/quickdb2">
?? <sql:param value="測試"/>
</sql:update>
語法3
<sql:update [dataSource="dataSource"]
[var="varName"][scope="{page|request|session|application}"]>
update statement
optional<sql:param>actions
</sql:update>
例1
<c:set var="aa" value="測試"/>
<sql:update var="update2"?? dataSource="jdbc/quickdb2">
delete from users where username=?
?? <sql:param>
??? ${aa}
?? </sql:param>
</sql:update>
TRANSACTION標簽
<sql:transaction [dataSource="dataSource"]
[isolation=isolationLevel]>
<sql:query>and<sql:update>statements
</sql:transaction>
isolationLevel::="read_committed"|"read_uncommitted"|"repeatable_read"|"serializable"
注意:嵌套在它里面的<sql:query>和<sql:update>標簽不用使用DataSource屬性來另外指定數據源.
?????? XML標簽
<x:parse>
用于解析XML文檔
語法1:解析由String或者Reader對象組成的XML文檔.
<x:parse xml="XMLDocument"
{var="var" [scope="scope"]|varDom="var"[scopeDom="scope"]}
[systemId="systemId"]
[filter="filter"]/>
語法2:解析在Body中指定的XML文檔.
<x:parse
{var="var" [scope="scope"]|varDom="var"[scopeDom="scope"]}
[systemId="systemId"]
[filter="filter"]>
XML Document to parse
</x:parse>
例1:
<c:set var="xmlText">
?? <a>
??? <b>
???? <c>
????? test1
???? </c>
??? </b>
??? <d>
????? test2
??? </d>
?? </a>
</c:set>
<x:parse var="myxml" xml="${xmlText}" />
<x:out select="$myxml/a/b/c"/>
<x:out select="$myxml//d"/>
<x:parse var="bookxml">
?? <books>
????? <book id="01">
???????? <name>jsp 應用開發詳解</name>
???????? <price>59</price>
????? </book>
?? </books>
</x:parse>
<x:out select="$bookxml/books//name"/>
<x:out>
計算XPath表達式,并把結果返回給JspWriter對象進行輸出
語法:
<x.out select="XpathExpression" [escapeXml="true|false}"]/>
例1:
<x:parse var="test">
?? <books>
????? <book id="01">
???????? <name>jsp 應用開發詳解</name>
???????? <price>59</price>
????? </book>?????
?? </books>
</x:parse>
<x:out select="$test/books//name"/><br>
<x:out select="$test//name"/><br>
<x:out select="$test/books/book/name"/><br>
<x:out select="$test/books/book/price"/><br>
<x:set>
計算XPath表達式,并且把結果保存到某個范圍的變量中.
語法:
<x:set select="XPathExpression"
var="varName"[scope="{page|request|session|application}"]/>
posted on 2007-10-23 19:13
jadmin 閱讀(50)
評論(0) 編輯 收藏