JSTL1.0 知识回顾与总结
JSTL1.0,由四个定制标志库(core,format,xml和sql) 和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsTLV )组成。
1.基本输出设置操作
1).<c:out> 操作示例
1 <c:out value="Hello ${user.firstName} ${user.lastName}"/> 2 3 带缺省内容的 <c:out> 操作示例 4 Hello <c:out value="${user.username}" default=="Guest"/>! 5 6 禁用转义的 <c:out> 操作示例 7 <c:out value="${user.company}" escapeXml=="false"/>
2).<c:set> 操作示例
1 <c:set var="timezone" scope="session" value="CST"/> 2 3 或者 <c:set var="timezone" scope="session">CST</c:set>
3).合并 <c:set> 和 <c:out> 以提供缺省变量值
1 <c:set var="timezone" scope=="session"> 2 <c:out value="${cookie['tzPref'].value}" default=="CST"/> 3 </c:set> 4 5 <c:choose> 6 <c:when test="${user.role == 'member'}"> 7 <p>Welcome, member!</p> 8 </c:when> 9 <c:otherwise> 10 <p>Welcome, guest!</p> 11 </c:otherwise> 12 </c:choose>
2.流控制操作
1).对数字迭代
1 <table> 2 <tr><th>Value</th> 3 <th>Square</th></tr> 4 <c:forEach var="x" begin="0" end="10" step="2"> 5 <tr><td><c:out value="${x}"/></td> 6 <td><c:out value="${x * x}"/></td></tr> 7 </c:forEach> 8 </table>
2).对集合进行迭代
1 <c:forEach var="name" items="expression" varStatus="name" begin="expression" end="expression" step="expression"> 2 body content 3 </c:forEach> 4 5 <c:forTokens var="name" items="expression" delims="expression" varStatus="name" begin="expression" end="expression" step="expression"> 6 body content 7 </c:forTokens>
items 的值 所产生的 item 值
java.util.Collection 调用 iterator() 所获得的元素
java.util.Map java.util.Map.Entry 的实例
java.util.Iterator 迭代器元素
java.util.Enumeration 枚举元素
Object 实例数组 数组元素
基本类型值数组 经过包装的数组元素
用逗号定界的 String 子字符串
javax.servlet.jsp.jstl.sql.Result SQL 查询所获得的行
3).条件操作的语法
1 <c:if test="expression" var="name" scope="scope"> 2 body content 3 </c:if> 4 5 <c:choose> 6 <c:when test="${pageContext.request.scheme eq 'http'}"> 7 This is an insecure Web session. 8 </c:when> 9 <c:when test="${pageContext.request.scheme eq 'https'}"> 10 This is a secure Web session. 11 </c:when> 12 <c:otherwise> 13 You are using an unrecognized Web protocol. How did this happen?! 14 </c:otherwise> 15 </c:choose>
4).异常处理
1 <c:catch var="name"> 2 body content 3 </c:catch>
3.URL 操作
<c:url>
4.导入内容
<c:import>
5.请求重定向
<c:redirect>
6. EL 运算符
算术运算符 + 、 - 、 * 、 / (或 div )和 % (或 mod )
关系运算符 == (或 eq )、 != (或 ne )、 < (或 lt )、 > (或 gt )、 <= (或 le )和 >= (或 ge )
逻辑运算符 && (或 and )、 || (或 or )和 ! (或 not )
验证运算符 empty
1 ${item.price * (1 + taxRate[user.address.zipcode])} 2 ${(x >= min) && (x <= max)}
7.通过定制标记进行格式化和国际化
1).本地化(fmt 库)
1 <fmt:setLocale value="fr_CA" scope="session"/>
2).日期标记
<fmt:formatDate value="expression" timeZone="expression" type="field" dateStyle="style" timeStyle="style" pattern="expression" var="name" scope="scope"/> <fmt:formatDate value="${log.logTime}" type="both" pattern="yyyy-MM-dd HH:mm:ss"/>
3).数字标记
1 <fmt:formatNumber value="expression" type="type" pattern="expression" currencyCode="expression" currencySymbol="expression" maxIntegerDigits="expression" minIntegerDigits="expression" 2 maxFractionDigits="expression" minFractionDigits="expression" groupingUsed="expression" var="name" scope="scope"/> 3 <fmt:formatNumber value="0.02" type="currency"/>
4).消息标记
Greeting_fr.properties 本地化资源束的内容 com.taglib.weblog.Greeting.greeting=Bonjour {0}, et bienvenue au JSTL Blog. com.taglib.weblog.Greeting.return=Retournez <fmt:bundle basename="com.taglib.weblog.Greeting"> <fmt:message key="com.taglib.weblog.Greeting.greeting"> <fmt:param value="${user.fullName}"/> </fmt:message>
8.交换XML和数据库内容的定制标记库
1).xml库
1 <x:parse xml="expression" var="name" scope="scope" filter="expression" systemId="expression"/>
2).sql库
1 <sql:setDataSource dataSource="expression" var="name" scope="scope"/> 2 3 <sql:setDataSource url="expression" driver="expression" user="expression" password="expression" var="name" scope="scope"/> 4 <sql:setDataSource var="dataSrc" url="jdbc:mysql:///taglib" driver="org.gjt.mm.mysql.Driver" user="admin" password="secret"/> 5 <sql:query var="queryResults" dataSource="${dataSrc}"> 6 select * from blog group by created desc limit ? 7 <sql:param value="${6}"/></sql:query> 8 <table border="1"> 9 <tr> 10 <th>ID</th> 11 <th>Created</th> 12 <th>Title</th> 13 <th>Author</th> 14 </tr> 15 <c:forEach var="row" items="${queryResults.rows}"> 16 <tr> 17 <td><c:out value="${row.id}"/></td> 18 <td><c:out value="${row.created}"/></td> 19 <td><c:out value="${row.title}"/></td> 20 <td><c:out value="${row.author}"/></td> 21 </tr> 22 </c:forEach> 23 </table>
以上来自个人知识总结和回顾,转载请注明出处,有不妥之处,欢迎留言谈论。