|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
其实你不用Struts,spring这些工具,直接用jsp,servlet能够很方便地写出来,而且,可以根据个人的水平、爱好,有很多方案。而struts,spring这些工具的出来。js|历程|网页流程把持
让我们转为会商JSTL的流程把持和前提标志。假如你已用任何一种言语利用了前提和流程把持语句,实际上这里没甚么奇怪的工具。
c:if举措处置复杂前提语句的测试。盘算测试属性中的Boolean表达式的值,假如表达式为真的话,盘算体的内容。鄙人面的举措中,我们也申明了备选项var属性。为了今后的利用,var属性保留测试了局在页(假如没有指定其他scope属性的话)中。
- <c:iftest="${status.totalVisits==1000000}"var="visits">Youarethemillionthvisitortooursite!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:whentest="${item.type==book}">...</c:when><c:whentest="${item.type==electronics}">...</c:when><c:whentest="${item.type==toy}">...</c:when><c:otherwise>...</c:otherwise></c:choose>
复制代码
c:foreach举措供应一个简单的办法来迭代一个汇合的元素。假如你想只迭代汇合的一部分的话,你能够分离用begin、end、和step属性指定出发点、尽头和一个递增值。鄙人面的例子中,我们在变量customerNames中迭代一个汇合的内容;在每一个轮回中,下一个元素输出到变量名内并在c:foreach举措的体内盘算:
- <table><c:forEachvar="name"items="${customerNames}"><tr><td><c:outvalue="${name}"/></td></tr></c:forEach></table>
复制代码
记得Java的StringTokenizer类吗?有了c:forTokens举措,你能够用JSTL取得相似的功效。这个程序片段可以使用在delims属性中界说的定界符经由过程itemsString属性中的条目迭代。注重,items属性不用是一个字符间接量;它能够是任何无效的EL表达式:
- <table><c:forTokensitems="47,52,53,55,46,22,16,2"delim=","var="dailyPrice"><tr><td><c:outvalue="${dailyPrice}"/></td></tr></c:forTokens></table>
复制代码
在接上去的完全的JSTL页中,我列出了已传送到该页的一切参数。param和paramValues对象是映照关头字到一个或多个值的JavaMap集。在本例中,我们找出了用于汇合的每一个MapEntry的关头字即参数名,而且利用关头字来查找一切与关头字联系关系的参数值:
- <%@tagliburi="http://java.sun.com/jstl/core"prefix="c"%><html><body><head><title>ParameterListingExample</title></head><br><b>Parametervaluespassedtothispageforeachparameter:</b><tableborder="2"><c:forEachvar="current"items="${param}"><tr><td><b><c:outvalue="${current.key}"/></b></td><c:forEachvar="aVal"items="${paramValues[current.key]}"><td><c:outvalue="${aVal}"/></td></c:forEach></tr></c:forEach></table></body></html>
复制代码
其他举措
我们也必要会商一些其他主要的中心标志库举措。在网页完成中一个潜伏的成绩局限与URL编码有关。没有URL编码,在网页中传送的URL的某个字符如空格,大概会利诱Web服务器。URL编码确保这些特别的字符用不引发利诱的字符取代。以下例子在变量myUrl中界说了一个URL,该变量myUrl由一个URL和一系列参数构成。URL举措(注重,这里只在JSTL意义上的举措)包管一切字符都准确的编码:
- <c:urlvalue="http://acme.com/exec/register"var="myUrl"><c:paramname="name"value="${param.name}"/><c:paramname="country"value="${param.country}"/></c:url><ahref=<c:outvalue="${myUrl}"/>>Register</a>
复制代码
在下面的代码中,param举措复杂的界说了一组名值对。
JSP同意计划者用指令包含其他页的内容。JSTL用JSTLc:import举措扩大了这个观点。c:import的次要上风是:你能指定一个恣意的URL;也能够包括你的Web使用以外(W3C的任何中央)的页的内容大概你的服务器上的另外一个Web使用内的页的内容。
关于一组与HTTP相干的标志来讲,没有一个办法处置HTTP重定向是不完全的。JSTL用c:redirect举措撑持它。
国际化标志库
在会商了JSTL撑持国际化中,我假定你已有了对以下主题的公道的了解:
●资本包和Java怎样找到它们
●Locale类
●资本包查找和MessageFormat类
●部分编码和它与Java国际化的干系
●Java文本和数据格局化
我鄙人面的两个部分会商了国际化标志库。在第一部分,我包含了你大概利用的格局化息争释相干的举措(它最后对应于java.text封装包中的类),只管你没有开辟过完整的国际化使用程序,大概你也要用到它。在第二部分,我申明了更针关于国际化的举措。
假如存在一个远程的大概性,你的使用程序会在你本国以外利用。假如你从一入手下手就创建在国际化的撑持上,那末开辟就会加倍简单。不管你利用何种办法来开辟,即便像JSTL一样简单利用的办法,一入手下手创建在国际化撑持上也是非常无益的。
C#是盗用了Java的源代码,仿照开发的,原因是Java是开源的啊,盗了也白盗,还有一点,开发C#语言的团队是就是开发Java语言的团队,是微软重金挖过去的啊 |
|