1.
2.
3.
4.
5.
JSTL标签库使用方法:
标签库
核心标签库
国际化标签(I18N)
SQL标签库
XML标签库
函数标签库
核心标签库
表达式操作标签:
out标签:
- <c: out value=”object” [escapeXml=”true|false”] />
<c: out value=”object” [escapeXml=”true|false”] />
- <c: out value=”object” [escapeXml=”true|false”] >defalut value</c:out>
<c: out value=”object” [escapeXml=”true|false”] >defalut value</c:out>
这表示当value属性指定的object值为null时,就会显示体中指定的值,也就是default value的值,体中也可以是jsp代码.
1.
2.
3.
set标签:
- <c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]/>
<c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]/>
- <span style="color:#339966;word-wrap:normal; word-break:normal; line-height:21px"><c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]>
- default value
- </c:set></span>
<c:set var=”varName” value=”varValue” [scope=”page|request|session|application”]>
default value
</c:set>
3.
- <c:set property=”propertyName” target=”target” value=”value”/>
<c:set property=”propertyName” target=”target” value=”value”/>
4.
- <c:set property=”propertyName” target=”target” value=”value”>
- default value
- </c:set>
<c:set property=”propertyName” target=”target” value=”value”>
default value
</c:set>
remove标签
- <c:remove var=”varName” [scope=”page|request|session|application”] />
<c:remove var=”varName” [scope=”page|request|session|application”] />
1.
2.
如果没有scope属性,即采用默认值,就相当于调用PageContext.removeAttribute(varName)方法,如果指定了这个变量所在的范围,那么系统会调用PageContext.removeAttribute(varName,scope)方法.
catch标签的功能和java中的try{…}catch{…}语句的功能很相似,它用于捕获嵌入到其中间语句抛出的异常,这个标签的使用格式如下:
- <c:catch var=”varName”>
- 相关操作语句
- </c:catch>
- --如果操作语句中出现异常,则catch会将异常保存在 varName变量中.
<c:catch var=”varName”>
相关操作语句
</c:catch>
--如果操作语句中出现异常,则catch会将异常保存在 varName变量中.
1.
- <c:if test=”checkCondition” var=”varName” scope=”page|request|session|application”/>
<c:if test=”checkCondition” var=”varName” scope=”page|request|session|application”/>
- <c:if test=”checkCondition” var=”varName” scope=”page|request|session|application”>
- body content
- </c:if>
<c:if test=”checkCondition” var=”varName” scope=”page|request|session|application”>
body content
</c:if>
var :
(if条件执行后所得到的boolean值将要保存在var变量中).
choose , when , otherwise
- <c:set var=”num” scope=”page” value=”admin”/>
<c:set var=”num” scope=”page” value=”admin”/>
- <c:choose>
- <c:when test=”${num==’guest’}”>
- <c:out value=”guest”/>
- </c:when>
- <c:when test=”${num==’admin’}”>
- <c:out value=”admin”/>
- </c:when>
- <c:otherwise>
- <c:out value=”other”/>
- </c:otherwise>
- </c:choose>
<c:choose>
<c:when test=”${num==’guest’}”>
<c:out value=”guest”/>
</c:when>
<c:when test=”${num==’admin’}”>
<c:out value=”admin”/>
</c:when>
<c:otherwise>
<c:out value=”other”/>
</c:otherwise>
</c:choose>
forEach迭代标签
该标签用来对一个collection集合中的一系列对象进行迭代输出,并且可以指定迭代次数,一般的使用格式如下:
- <c:forEach items=”collection” var=”varName” [varstatue=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
- Body content
- </c:forEach>
<c:forEach items=”collection” var=”varName” [varstatue=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
Body content
</c:forEach>
这个标签使用的属性描述如下:
1.
2.
3.
4.
5.
6.
例:
- <%
- String Items[] =new String[5];
- Items[0]=”核心标签库”;
- Items[1]=”国际化标签库”;
- Items[2]=”SQL标签库”;
- Items[3]=”XML标签库”;
- Items[4]=”函数标签库”;
- Request.setAttribute(“ItemName”,Items);
- %>
- <B>
- <c:out value=”不指定begin和end的迭代:”/><B><br>
- <c:forEach var=”ItemName” items=”${Items}”>
- <c:out value=”${ItemName}” /><br>
- </c:forEach>
- <B><c:out value=”指定begin和end的迭代:”/><B><br>
- <c:forEach var=”ItemName” items=”${Items}” begin=”1” end=”3” step=”1”>
- <c:out value=”${ItemName}” /><br>
- </c:forEach>
- <B><c:out value=”输出整个迭代的信息:”/><B><br>
- <c:forEach var=”ItemName” items=”${Items}” begin=”3” end=”4” step=”1” varStatus=”s”>
- <c:out value=”${ItemName}” />的四种属性:<br>
- 所在位置即索引: <c:out value=”${s.index}” /> <br>
- 总共已迭代的次数: <c:out value=”${s.count}”/><br>
- 是否为第一个位置: <c:out value=”${s.first}” /><br>
- 是否为最后一个位置: <c:out value=”${s.last}”/>
- </c:forEach>
<%
String Items[] =new String[5];
Items[0]=”核心标签库”;
Items[1]=”国际化标签库”;
Items[2]=”SQL标签库”;
Items[3]=”XML标签库”;
Items[4]=”函数标签库”;
Request.setAttribute(“ItemName”,Items);
%>
<B>
<c:out value=”不指定begin和end的迭代:”/><B><br>
<c:forEach var=”ItemName” items=”${Items}”>
<c:out value=”${ItemName}” /><br>
</c:forEach>
<B><c:out value=”指定begin和end的迭代:”/><B><br>
<c:forEach var=”ItemName” items=”${Items}” begin=”1” end=”3” step=”1”>
<c:out value=”${ItemName}” /><br>
</c:forEach>
<B><c:out value=”输出整个迭代的信息:”/><B><br>
<c:forEach var=”ItemName” items=”${Items}” begin=”3” end=”4” step=”1” varStatus=”s”>
<c:out value=”${ItemName}” />的四种属性:<br>
所在位置即索引: <c:out value=”${s.index}” /> <br>
总共已迭代的次数: <c:out value=”${s.count}”/><br>
是否为第一个位置: <c:out value=”${s.first}” /><br>
是否为最后一个位置: <c:out value=”${s.last}”/>
</c:forEach>
代码说明:
forTokens
这个标签的作用和Java中的StringTokenizer类的作用非常相似,通过items属性来指定一个特定的字符串,然后通过delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组,与forEach标签一样,forTokens标签也可以指定begin和end以及step属性值.
使用格式如下:
- <c:forTokens items=”stringOfTokens” delims=”delimiters” var=”varName” [varStatus=”varStatusName”] [begin=”begin”]
- [end=”end”] [step=”step”]>
- Body content
- </c:forTokens>
<c:forTokens items=”stringOfTokens” delims=”delimiters” var=”varName” [varStatus=”varStatusName”] [begin=”begin”]
[end=”end”] [step=”step”]>
Body content
</c:forTokens>
标签中的各个属性描述如下:
1.
2.
3.
4.
5.
6.
7.
例:
- <c:out value=”forTokens标签实例”/>
- <h4>使用” | ” 作为分隔符</h4>
- <c:forTokens var=”token” items=”bleu,rouge|vert,jaune|blanc,rouge” delims=”|”>
- <c:out value=”${token}”/>
- </c:forTokens>
- <h4>使用” | , ”作为分隔符</h4>
- <c:forTokens var=”token” items=”bleu,rouge|vert,jaune|blanc,rouge” delims=”|,”>
- <c:out value=”${token}”/>
- </c:forTokens>
<c:out value=”forTokens标签实例”/>
<h4>使用” | ” 作为分隔符</h4>
<c:forTokens var=”token” items=”bleu,rouge|vert,jaune|blanc,rouge” delims=”|”>
<c:out value=”${token}”/>
</c:forTokens>
<h4>使用” | , ”作为分隔符</h4>
<c:forTokens var=”token” items=”bleu,rouge|vert,jaune|blanc,rouge” delims=”|,”>
<c:out value=”${token}”/>
</c:forTokens>
代码说明: delims=”|,” ,
URL相关的标签:
URL相关的标签主要用来将其他文件包含进来,或者提供页面之间的重定位以及URL地址的生成,参数的输出等.一般包括如下几个标签.
<c:import>标签:
<c:redirect>标签:
<c:url> :
<c:param> :
<c:import>
- <c:import url=”url” [context=”context”] [var=”varName”] [scope=”page|request|session|application”]
- [varReader=”varReader”] [charEncodion=”charEncoding”]>
- Body content
- </c:import>
<c:import url=”url” [context=”context”] [var=”varName”] [scope=”page|request|session|application”]
[varReader=”varReader”] [charEncodion=”charEncoding”]>
Body content
</c:import>
标签中的属性描述如下:
Import标签即可以采用相对路径也可以采用绝对路径来引用本地点中的任何静态文件,还可以使用绝对路径引用外部站点中的静态文,
可以把引用文件中的内容赋值给var属性指定的变量,然后进行读取,也可以赋值给varReader指定的Reader类型的变量,然后进行相应的读取.
有时引入的文件在本地显示会出现乱码,这时可以通过charEncoding来指定这些内容所采用的字符集编码.
<c:redirect>和<c:param>标签:
- <c:redirect url=”url” [context=”context”]/>
- 在redirect标签中指定param参数的使用格式如下:
- <c:redirect url=”url” []context=”context”>
- <c:param name=”paramName” value=”value”/>
- </c:redirect>
<c:redirect url=”url” [context=”context”]/>
在redirect标签中指定param参数的使用格式如下:
<c:redirect url=”url” []context=”context”>
<c:param name=”paramName” value=”value”/>
</c:redirect>
例:
- <c:redirect url=”c_redirect2.jsp” >
- <c:param name=”userName” value=”admin”/>
- </c:redirect>
<c:redirect url=”c_redirect2.jsp” >
<c:param name=”userName” value=”admin”/>
</c:redirect>
- <body>
- userName=<c:out value=”${param.userName}”>
- </body>
<body>
userName=<c:out value=”${param.userName}”>
</body>
<c:url>标签:
- <c:url value=”value” [context=”context”] [var=”varName”] [scope=”page|request|session|application”] />
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”page|request|session|application”] />
- <c:url value=”value” [context=”context”] [var=”varName”] [scope=”page|request|session|application”] >
- <c:param name=”paramName” value=”value” />
- </c:url>
<c:url value=”value” [context=”context”] [var=”varName”] [scope=”page|request|session|application”] >
<c:param name=”paramName” value=”value” />
</c:url>
标签中使用的属性描述如下:
创建一个c_url.jsp,其源代码如下:
- <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
- <c:url var=”url” value=”c_url2.jsp” scope=”session” >
- <c:param name=”userName” value=”admin”/>
- <c:param name=”password” value=”123456”/>
- </c:url>
- <c:out value=”${url}”/>
- <a herf=’<c:out value=”${url}”/>’>Link to other page</a>
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
<c:url var=”url” value=”c_url2.jsp” scope=”session” >
<c:param name=”userName” value=”admin”/>
<c:param name=”password” value=”123456”/>
</c:url>
<c:out value=”${url}”/>
<a herf=’<c:out value=”${url}”/>’>Link to other page</a>
国际化( I18N )标签库
国际化标签包括:
HTML请求到达服务器时,浏览器提供的HTTP首部可以指出用户的首选本地化环境(可能是多个本地化环境的列表).这个列表放在Accept-Language HTTP首部中,jsp容器会访问这个首部信息,如果没有使用标签<fmt:setLocale>明确地指出引用本地化环境,JSTL标签就会使用这个列表中的首选本地化环境.
<fmt:setLocale>标签专门用于设置当前本地化环境,基本使用格式如下:
- <fmt:setLocale value=”…locale value…” [variant=”…variant value…”] [scope=”page|request|session|application”] />
<fmt:setLocale value=”…locale value…” [variant=”…variant value…”] [scope=”page|request|session|application”] />
<fmt:setLocale>标签的属性描述如下:
value:
一旦已经设置了web引用的本地化环境后,就可以使用<fmt:bundle>标签了,其体重可以包括一些调用本地化文本的<fmt:message>标签,使用格式如下:
- <fmt:bundle basename=”…the bundle’s base name…” [prefix=”…prefix name…”]>
- <fmt:message key=”…key name…”/>
- </fmt:bundle>
<fmt:bundle basename=”…the bundle’s base name…” [prefix=”…prefix name…”]>
<fmt:message key=”…key name…”/>
</fmt:bundle>
属性描述如下:
Basename:
prefix:
当<fmt:bundle>标签中嵌套<fmt:message>标签时,这时<fmt:message>标签默认使用<fmt:bundle>标签中的basename所指定的资源文件.
获取资源属性值标签<fmt:message>:
- <fmt:message key=”…name of property…” [bundle=”…resourceBundle…”][var=”…varible name…”] [scope=”…scope of var…”]/>
<fmt:message key=”…name of property…” [bundle=”…resourceBundle…”][var=”…varible name…”] [scope=”…scope of var…”]/>
Scope:
设置资源文件标签<fmt:setBundle>
该标签用于设置一个资源文件,并给定一个标记,以便可以通过<fmt:message>标准中指定bundle属性值来取得这个资源文件中的消息,使用格式如下:
- <fmt:setBundle basename=”…the bundle’s base name…” var=”…var name…” [scope=”page|request|session|application”]/>
<fmt:setBundle basename=”…the bundle’s base name…” var=”…var name…” [scope=”page|request|session|application”]/>
Var :
Scope:
该标签一般与<fmt:message>标签配套使用,用来在获取的消息中插入一个值.例如:资源文件中的一条消息如下:
- <fmt:message ……>
- <fmt:param value=”value”/>
- </fmt:message>
<fmt:message ……>
<fmt:param value=”value”/>
</fmt:message>
函数(function)标签库:
1.
2.
各类函数标签的功能:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<logic:notEmpty>
q
q
q
本示例既然要在替换后与替换前的工作一致,就应该对集合做两个判断:
q
q
“