`

c标签 if else c标签 总结

    博客分类:
  • jsp
阅读更多
JSTL标签用法

关键字:JSTL标签、<c:choose>、<c:forEach>、<c:forTokens>、<c:if>、<c:import>、<c:otherwise>、<c:out>、<c:param>、<c:redirect>、<c:remove>、<c:url>、<c:when>、<c:set>、<c:catch>

原来一直没有看过,我说过我是新手,但是好多资料上似乎也不重视 JSTL 。我看项目源代码发现其中使用到了这个标签库,感觉其还真是方便,页面看起来更加清爽。减少了 JAVA 程序员亲自写的代码量,还真验证了,不懒不做程序员,程序员如果写代码不想着偷懒,那么生活是很无趣的。

下面总结总结,学习学习。:)

JSP 标准标记库( Standard Tag Library , JSTL) 是一组以标准化格式实现许多通用的 Web 站点功能的定制标记。

JSP 技术的优势之一在于其定制标记库工具。除了核心 JSP 标记,如 jsp:include 之外,定制标记库工具使您能够创建唯一的标记来描述以站点或应用程序为导向的操作。一旦您创建了定制标记库 ( 简称 taglib) ,当您扩展项目或转向另一个项目时您可以重复使用这些标记。您还可以将 taglib 传递给其它开发人员,从而他们可以在自己的网站上使用,或者在您 Web 应用程序的其它部分使用。

<wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>JSTL 的目标是为了简化 JSP 页面的设计。对于页面设计人员来说,使用脚本语言(默认值是 JAVA 语言)操作动态数据是比较困难的,而采用标签和表达式语言相对容易一些, JSTL 的使用为页面设计人员和程序开发人员的分工协作提供了便利。</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

一.<wbr>配置 JSTL</wbr>

<wbr></wbr>

包括两个 JAR 文件, jstl.jar 和 standard.jar 。是什么没有必要管,重在应用( 1+1 ? =2 ,我们没有必要深究,只需要知道这么用就行。)。

<wbr></wbr>

原文引入:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

二.<wbr><span style="line-height:normal">Core 标签库</span></wbr>

<wbr></wbr>

Core 标签库主要包括了一般用途的标签、条件标签、迭代标签和 URL 相关的标签。在 JSP 页面使用 Core 标签,要使用 taglig 指令,指定引用的标签库,如下:

<%@ taglib rui=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>

<wbr></wbr>

一般用途的标签有 <c:out> 、 <c:set> 、 <c:remove> 、 <c:cath>

1.<c:out>

用于计算一个表达式并将结果输出。类似于 JSP 中 <%=%> 表达式,或者是 EL 中 $ ${el-expression} 。

<wbr></wbr>

2.<c:set>

用于设置范围变量的值或者 javabean 对象的属性。

看个实际例子:

<c:set var=”username” value=”lisi” scope=”session”/>

这样就相当于设置了 session 。

<wbr></wbr>

3.<c:remove>

相对 <c:set> 其作用是移除范围变量。比如: <c:remove var=”nusername” scope=”session”/>

<wbr></wbr>

4.<c:catch>

<wbr></wbr>

用于捕获在其中嵌套的操作所抛出的异常对象,并将异常信息保存到变量中。

我们将有可能抛出异常的代码放置到开始标签 :<c:catch> 和结束标签 :</c:catch> 之间。如果其中代码出现异常,异常对象将被捕获,保存在 var 声明的变量中,该变量总是有 page 范围。如果没有发生异常,而 var 所标识的范围变量将被移除。

如果没有指定 var 属性,异常只是简单的被捕获,异常信息并不会被保存。

Eg :

<c:catch var=”exception”>

<%

<wbr><wbr><wbr><wbr><wbr><wbr>int i = 5;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>int j = 0;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>int k=i/j;</wbr></wbr></wbr></wbr></wbr></wbr>

%>

</c:catch>

<c:out value=”${exception}” /><br>

<c:out value=”${exception.massage}”/>

后一句相当于: exception.getMessage()

<wbr></wbr>

条件标签包括 <c:if><c:choose><c:when><c:otherwise>

1.<c:if>

用于实现 java 中的 if 语句功能。

<wbr></wbr>

<c:if test=”${user.visitCount==1}”>

<wbr><wbr><wbr><wbr><wbr><wbr>This is your first visit .</wbr></wbr></wbr></wbr></wbr></wbr>

</c:if>

<wbr></wbr>

若为 true ,会打印中间部分。也可以声明 var ,方便下一步判断。

<c:if test=”${param.name==’admin’}” value=”result”/>

<c:out value=”${result}” />

<wbr></wbr>

2.<c:choose>

<c:choose> 和 <c:when> 、 <c:otherwise> 一起实现互斥条件执行,类似于 java 中的 if else.

<c:choose> 一般作为 <c:when> 、 <c:otherwise> 的父标签。

eg :

<c:choose>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;c:when test="${row.v_money&lt;10000}"&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>初学下海</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/c:when&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;c:when test="${row.v_money&gt;=10000&amp;&amp;row.v_money&lt;20000}"&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>身手小试</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/c:when&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;c:otherwise&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>商业能手</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;/c:otherwise&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

</c:choose>

<wbr></wbr>

迭代标签

迭代标签有<wbr>&lt;c:forEach&gt;</wbr><wbr>和 &lt;/c:forEach&gt;</wbr>

<wbr></wbr>

// 遍历记录集

<c:forEach items="${finalResult.rows}" var="row"><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<tr class="<%=tdClass[(rank+1)%2]%>">

<td align="center"><span><%=rank%> </span></td>

<td align="center"><span ><c:out value="${row.player_name}"/></span> </td>

<td align="center"><span > ¥ <c:out value="${row.money}"/></span></td>

</tr>

<%rank++;%><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr>

</c:forEach>

<wbr></wbr>

也可以设定固定次数。

<c:forEach var =”i” begin=”100 “ end= “110”>

<wbr><wbr><wbr><wbr><wbr><wbr>${i}</wbr></wbr></wbr></wbr></wbr></wbr>

</c:forEach>

如果再加个 step= “ 2 ”那么每次增长为 2 。

<wbr></wbr>

三.<wbr>sql 标签</wbr>

<wbr></wbr>

设置数据源:

<sql:setDataSource dataSource="proxool.breadTycoon" />

// 将数据库某查询的结果声明为一个变量

<sql:query var="finalResult" >

<wbr><wbr><wbr>select player_name,money from tb_player order by money DESC LIMIT 10<wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr>

</sql:query>

<wbr><wbr><wbr><wbr><wbr><wbr>然后可以:</wbr></wbr></wbr></wbr></wbr></wbr>

<c:forEach items="${ finalResult.rows}" var="row" varStatus="s">

<wbr><wbr><wbr><wbr><wbr><wbr><wbr>advCosts[${s.index}]=${row.adv_cost};</wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr>&lt;/c:forEach&gt;</wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>数据更新标签:</wbr></wbr></wbr></wbr></wbr></wbr>

<sql:update><wbr><wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>call proc_set_role_salespro(?,?,?,?,?);</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;sql:param value="30"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;sql:param value="39"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;sql:param value="&lt;%=spID%&gt;"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;sql:param value="&lt;%=productID%&gt;"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;sql:param value="1"/&gt;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>&lt;/sql:update&gt;</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

<sql:query var="queryAllChannelCount">

SELECT COUNT(*) as total FROM tb_channel WHERE game_id=? AND begin_round<func_cur_round(?) AND player_id=? AND channel_flag=0

<sql:param value="${gameID}"/>

<sql:param value="${gameID}"/>

<sql:param value="${playerID}"/>

</sql:query>

<c:forEach items="${queryAllChannelCount.rowsByIndex}" var="channelCN">

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;c:set value="${channelCN[0]}" var="channelTotal"/&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

</c:forEach>

<wbr></wbr>

调用存储过程更新数据库:

<wbr></wbr>

<c:if test="${param.changsubmit!=null}" >

<c:forEach items="${paramValues.pro_id}" var="getpro_id" varStatus="getparamsta">

<sql:update>

<wbr></wbr>

call proc_set_role_product(?,?,?,?,?,?,?,?);

<wbr></wbr>

<sql:param value="${gameID}"/>

<sql:param value="${playerID}"/>

<sql:param value="${getpro_id}"/>

<sql:param value="${getpro_id}"/>

<sql:param value="${paramValues.pro_sort[getparamsta.index]}"/>

<sql:param value="${paramValues.price[getparamsta.index]}"/>

<sql:param value="${paramValues.output[getparamsta.index]}"/>

<sql:param value="0"/>

</sql:update>

</c:forEach>

</c:if>

四. 格式化标签

<wbr></wbr>

<fmt: formatNumber value =”12.3” pattern=”.000”/>

将输出 12.300. 应用样式 ”.000”, 将使格式化后的小数部分有 3 位。不足 3 位将以 0 补齐。

<wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>&lt;fmt:formatDate value=”&lt;%=new java.util.Date() %&gt;” type=”date” /&gt;</wbr></wbr></wbr></wbr></wbr></wbr>

<wbr><wbr><wbr><wbr><wbr><wbr>格式化的结果是: 2007-5-27 .</wbr></wbr></wbr></wbr></wbr></wbr>

<fmt:formatDate value=”<%=new java.util.Date() %>” type=”time” />

格式化的结果是: 9:25:11

<fmt:formatDate value=”<%=new java.util.Date() %>” type=”both” />

格式化的结果是: 2007-5-27 9:25:11

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

补充知识点:

<wbr></wbr>

1. 替换 request.getParameter("test"):

<c:if test="${param.test!=null}" >

<c:out value="${param.test}" />

</c:if>

<wbr></wbr>

2. <c:redirect url="a.jsp">

<wbr></wbr>

3.<c:redirect url="/max.jsp" context="/ch16">

<c:param name="name1" value="665"/>

<c:param name="name3" value=" 斯蒂芬 "/>

</c:redirect>

<wbr></wbr>

4.<c:forTokens items="zhangsan:lisi:as" delims=":" var="name">

${name}

</c:forTokens>

<wbr></wbr>

from:http://www.blogjava.net/JAVA-HE/archive/2007/05/27/120344.html

分享到:
评论

相关推荐

    react中写动态标签,render方法中如何使用if else 判断

    在render()中循环数据,根据数据不同展示标签不同 import React from 'react'; const quanList=[ { id:1, buy_price:1,//购买券的价格 quan_price:30,//可抵扣价格 quanName:'仅限(学习机)商品使用', on_time...

    Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法

    vue中v-if 和v-else-if在页面加载的时候,不满足条件的标签会加载然后再消失掉,如果要解决这个问题,案例如下: vue html代码块: &lt;div v-if=type&gt; A &lt;div v-else-if=type&gt; B &lt;div v-else-if=type&gt; C Not A/B...

    struts2 标签库 帮助文档

    if/elseif/else标签:控制流程分支。 iteratot标签:对集合属性迭代(属性类型:List、Map、数组)。 append标签:将多个集合对象拼接在一起,组成一个新的集合。将多个集合使用一个标签完成迭代。 generatot标签...

    freemarker总结

    &lt;#elseif condition&gt;... &lt;#elseif condition&gt;... &lt;#else&gt; ... &lt;/#if&gt; 例子如下: &lt;#if (age&gt;60)&gt;老年人 &lt;#elseif (age&gt;40)&gt;中年人 &lt;#elseif (age&gt;20)&gt;青年人 &lt;#else&gt; 少年人 &lt;/#if&gt; 输出结果是:青年人 ...

    struts2讲义_吴峻申

    5.3.3 if、else、elseif标签使用介绍 81 5.3.4 iterator标签使用介绍 82 5.3.5 merge标签使用介绍 83 5.3.6 sort标签使用介绍 84 5.3.7 subset标签使用介绍 86 5.4 Struts2数据标签简介 88 5.4.1 action标签使用介绍...

    JSTL详细标签库介绍

    DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt; &lt;HTML&gt;&lt;HEAD&gt;关于java异常处理(讲义)--JSP中文网 ; charset=gb2312" http-equiv=Content-Type&gt; 关于java异常处理(讲义),JSP中文网&gt; 关于java异常...

    java编的简单计算器

    else if("c".equals(e.getActionCommand())){ jt.setText("0"); j=0;a=0;n=0;g=0; } else if("后退".equals(e.getActionCommand())){ st=jt.getText(); /*String r=new String(30); for...

    freemarker语法完整版

    if, else, elseif 语法 Java代码 &lt;#if condition&gt; ... &lt;#elseif condition2&gt; ... &lt;#elseif condition3&gt; ... ... &lt;#else&gt; ... &lt;/#if&gt; &lt;#if condition&gt; ... &lt;#elseif condition2&gt; ... &lt;#...

    C#编程规范文档 详细

    6.4 IF、 IF-ELSE、IF ELSE-IF 语句 25 6.4 FOR、FOREACH 语句 26 6.5 WHILE 语句 26 6.7. DO - WHILE 语句 27 6.8. SWITCH - CASE 语句 27 6.7. TRY - CATCH 语句 27 6.8. USING 块语句 28 6.9. GOTO 语句 28 第六...

    现代C++程序设计

    3.2.3 if-else if-else语句 3.2.4 低效的编程方法 3.2.5 if-else程序示例 3.2.6 嵌套if-else语句 3.2.7 条件运算符“?” 3.3 switch语句 3.4 循环 3.4.1 括号的用法 3.4.2 无限循环 3.5 for循环 3.5.1 不要改变...

    深入浅出Struts2(附源码)

    6.11 if、else和elseif标签 105 6.12 iterator标签 107 6.13 append标签 110 6.14 merge标签 111 6.15 generator标签 113 6.16 sort标签 116 6.17 subset标签 118 6.18 小结 119 第7章类型转换 120 7.1 ...

    C#编程规范

    6.4 IF、 IF-ELSE、IF ELSE-IF 语句 26 6.4 FOR、FOREACH 语句 27 6.5 WHILE 语句 27 6.7. DO - WHILE 语句 28 6.8. SWITCH - CASE 语句 28 6.9. TRY - CATCH 语句 28 6.10. USING 块语句 29 6.11. GOTO 语句 29 第...

    C#编程规范 2.0 (CodePub)

    6.4 IF、 IF-ELSE、IF ELSE-IF 语句 26 6.4 FOR、FOREACH 语句 27 6.5 WHILE 语句 27 6.7. DO - WHILE 语句 28 6.8. SWITCH - CASE 语句 28 6.9. TRY - CATCH 语句 28 6.10. USING 块语句 29 6.11. GOTO 语句 29 第...

    C#代码规范 常用的代码编写规则

    6.4 IF、 IF-ELSE、IF ELSE-IF 语句 26 6.4 FOR、FOREACH 语句 27 6.5 WHILE 语句 27 6.7. DO - WHILE 语句 28 6.8. SWITCH - CASE 语句 28 6.9. TRY - CATCH 语句 28 6.10. USING 块语句 29 6.11. GOTO 语句 29 第...

    EL表达式 (详解)

    EL表达式 (详解) EL表达式 ... 4) 条件标签&gt; 1.算术运算符有五个:+、-、*或$、/或div、%或mod 2.关系运算符有六个:==或eq、!=或ne、&lt;或lt、&gt;或gt、或le、&gt;=或ge 3.逻辑运算符有三个:&&或and、||或or、!或not ...

    Java 2实用教程(第三版)实验指导与习题解答

    else if(number&gt;999) //判断number是4位数的条件 { System.out.println(number+"是4位数"); if(d4==d1&&d2;==d3) //判断number是回文数的条件码 { System.out.println(number+"是回文数"); } else { ...

    【全新正版】现代C++程序设计(原书第2版)

    3.2.3 if-else if-else语句 3.2.4 低效的编程方法 3.2.5 if-else程序示例 3.2.6 嵌套if-else语句 3.2.7 条件运算符“?” 3.3 switch语句 3.4 循环 3.4.1 括号的用法 3.4.2 无限循环 3.5 for循环 3.5.1 不要改变循环...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    6.11 if、else和elseif标签 105 6.12 iterator标签 107 6.13 append标签 110 6.14 merge标签 111 6.15 generator标签 113 6.16 sort标签 116 6.17 subset标签 118 6.18 小结 119 第7章 类型转换 120 7.1 类型转换...

Global site tag (gtag.js) - Google Analytics