JSTL改进JSP来简化网页的实现过程(3)
2008-02-23 09:41:01来源:互联网 阅读 ()
让我们转为讨论JSTL的流程控制和条件标记。如果你已经用任何一种语言使用了条件和流程控制语句,理论上这里没什么新鲜的东西。
c:if动作处理简单条件语句的测试。计算测试属性中的Boolean表达式的值,如果表达式为真的话,计算体的内容。在下面的动作中,我们也说明了备选项var属性。为了以后的使用,var属性保存测试结果在页(如果没有指定其他scope属性的话)中。
<c:if test="${status.totalVisits == 1000000}" var="visits"> You are the millionth visitor to our site! Congratulations! </c:if>
下面我们展示了用c:choose、 c:when、 和 c:otherwise交换逻辑的JSTL的支持。一组c:when动作可能包括在一个备选的标记内,如果在c:when块中任何表达式计算值为真的话,就不用计算c:choose动作内的测试。如果c:when块中没有一个测试计算值为真的时候:如果出现c:otherwise动作内容时,则计算c:otherwise动作的内容:
<c:choose> <c:when test="${item.type == book }"> ... </c:when> <c:when test="${item.type == electronics }"> ... </c:when> <c:when test="${item.type == toy }"> ... </c:when> <c:otherwise> ... </c:otherwise> </c:choose>
c:foreach动作提供一个容易的方法来迭代一个集合的元素。如果你想只迭代集合的一部分的话,你可以分别用begin、 end、 和 step属性指定起点、终点和一个递增值。在下面的例子中,我们在变量customerNames中迭代一个集合的内容;在每个循环中,下一个元素输入到变量名内并在c:foreach动作的体内计算:
<table> <c:forEach var="name" items="${customerNames}"> <tr><td><c:out value="${name}"/></td></tr> </c:forEach> </table>
记得Java的StringTokenizer类吗?有了c:forTokens动作,你可以用JSTL获得类似的功能。这个程序片断可使用在delims属性中定义的定界符通过items String属性中的条目迭代。注意,items 属性不必是一个字符直接量;它可以是任何有效的EL表达式:
<table> <c:forTokens items="47,52,53,55,46,22,16,2" delim="," var="dailyPrice"> <tr><td><c:out value="${dailyPrice}"/></td></tr> </c:forTokens> </table>
在接下来的完整的JSTL页中,我列出了已经传递到该页的所有参数。param 和paramValues对象是映射关键字到一个或多个值的Java Map集。在本例中,我们找出了用于集合的每个MapEntry的关键字即参数名,并且使用关键字来查找所有与关键字关联的参数值:
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <html> <body> <head> <title>Parameter Listing Example</title> </head> <br> <b>Parameter values passed to this page for each parameter: </b> <table border="2"> <c:forEach var="current" items="${param}"> <tr> <td> <b><c:out value="${current.key}" /></b> </td> <c:forEach var="aVal" items="${paramValues[current.key]}"> <td> <c:out value="${aVal}" /> </td> </c:forEach> </tr> </c:forEach> </table> </body> </html>
其他动作
我们也需要讨论一些其他重要的核心标记库动作。在网页实现中一个潜在的问题范围与URL编码有关。没有URL编码,在网页中传递的URL的某个字符如空格,可能会迷惑Web服务器。URL编码确保这些特殊的字符用不引起迷惑的字符代替。下列例子在变量myUrl中定义了一个URL,该变量myUrl由一个URL和一系列参数组成。URL动作(注意,这里只在JSTL意义上的动作)保证所有字符都正确的编码:
<c:url value="http://acme.com/exec/reGISter" var="myUrl"> <c:param name="name" value="${param.name}"/> <c:param name="country" value="${param.country}"/> </c:url> <a href= <c:out value="${myUrl}"/> >Register</a>
在上面的代码中,param动作简单的定义了一组名值对。
JSP允许设计者用
对于一组与HTTP相关的标记来说,没有一个方法处理HTTP重定向是不完整的。JSTL用c:redirect动作支持它。
国际化标记库
在讨论了JSTL支持国际化中,我假设你已经有了对下列主题的合理的理解:
●资源包和Java如何找到它们
●Locale类
●资源包查找和MessageFormat类
●局部编码以及它与Java国际化的关系
●Java文本和数据格式化
我在下面的两个部分讨论了国际化标记库。在第一部分,我包括了你可能使用的格式化和解释相关的动作(它最初对应于java.text封装包中的类),尽管你没有开发过完全的国际化应用程序,可能你也要用到它。在第二部分,我说明了更针对于国际化的动作。
如果存在一个远程的可能性,你的应用程序会在你本国之外使用。如果你从一开始就建立在国际化的支持上,那么开发就会更加容易。无论你使用何种方法来开发,即使像JSTL一样容易使用的方法,一开始建立在国际化支持上也是十分有益的。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JSTL改进JSP来简化网页的实现过程(4) 2008-02-23
- JSTL改进JSP来简化网页的实现过程(2) 2008-02-23
- JSTL改进JSP来简化网页的实现过程(1) 2008-02-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash