首页 > 代码库 > JSTL1.0 知识回顾与总结

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 content3     </c:forEach>4 5     <c:forTokens var="name" items="expression" delims="expression" varStatus="name" begin="expression" end="expression" step="expression">6         body content7     </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 content3     </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>


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

JSTL1.0 知识回顾与总结