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>


以上来自个人知识总结和回顾,转载请注明出处,有不妥之处,欢迎留言谈论。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。