<%@ page contentType="text/html;charset=utf-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jstl/sql" prefix="sql"%>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x"%>
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="http://127.0.0.1:8080/ch15/beimport.jsp"/>
</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="http://127.0.0.1:8080/ch15/beimport.jsp"/>
<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 阅读(49)
评论(0) 编辑 收藏