c标签 if else c标签 总结

来源:互联网 发布:女士香水 知乎 编辑:程序博客网 时间:2024/05/19 19:34

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 应用程序的其它部分使用。

      

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

 

一. 配置JSTL

 

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

 

原文引入:

<%@ 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"%>

                                                                

二. Core标签库

 

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

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

 

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

1.<c:out>

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

 

2.<c:set>

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

看个实际例子:

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

这样就相当于设置了 session 。

 

3.<c:remove>

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

 

4.<c:catch>

 

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

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

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

Eg :

<c:catch var=”exception”>

<%

      int i = 5;

      int j = 0;

      int k=i/j;

%>

</c:catch>

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

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

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

 

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

1.<c:if>

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

 

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

      This is your first visit .

</c:if>

 

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

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

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

 

2.<c:choose>

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

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

eg :

<c:choose>

      <c:whentest="${row.v_money<10000}">

             初学下海

      </c:when>

      <c:whentest="${row.v_money>=10000&&row.v_money<20000}">

             身手小试

      </c:when>

      <c:otherwise>

             商业能手

      </c:otherwise>

</c:choose>

 

迭代标签

迭代标签有 <c:forEach> 和</c:forEach>

 

// 遍历记录集

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

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

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

<tdalign="center"><span><c:outvalue="${row.player_name}"/></span></td>

<tdalign="center"><span >¥ <c:outvalue="${row.money}"/></span></td>

</tr>

<%rank++;%>     

</c:forEach>

 

也可以设定固定次数。

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

      ${i}

</c:forEach>

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

 

三. sql标签

 

设置数据源:

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

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

<sql:query var="finalResult" >

    selectplayer_name,money from tb_player order by money DESC LIMIT10   

</sql:query>

      然后可以:

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

       advCosts[${s.index}]=${row.adv_cost};

  </c:forEach>

      数据更新标签:

<sql:update>  

               call proc_set_role_salespro(?,?,?,?,?);

               <sql:param value="30"/>

               <sql:param value="39"/>

               <sql:paramvalue="<%=spID%>"/>

               <sql:paramvalue="<%=productID%>"/>

               <sql:paramvalue="1"/>               

           </sql:update>

 

<sql:queryvar="queryAllChannelCount">

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

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

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

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

</sql:query>

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

      <c:set value="${channelCN[0]}"var="channelTotal"/>

</c:forEach>

 

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

 

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

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

<sql:update>

 

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

 

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

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

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

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

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

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

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

<sql:param value="0"/>

</sql:update>

</c:forEach>

</c:if>

四. 格式化标签

 

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

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

 

      <fmt:formatDate value=”<%=newjava.util.Date() %>” type=”date”/>

      格式化的结果是: 2007-5-27 .

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

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

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

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

 

 

 

补充知识点:

 

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

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

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

</c:if>

 

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

 

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

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

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

</c:redirect>

 

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

${name}

</c:forTokens>

 

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

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信号手机号码换了密码改了怎么办 电信充值卡的密码刮花了怎么办 qq充了q币不到账怎么办 开通黄钻不支持手机话费开通怎么办 银行卡给红包充值迟迟不到账怎么办 我想用信用卡往微信零钱充钱怎么办 修改密保手机跳过原手机验证怎么办 骏卡有用但是充不进去怎么办 在云南移动上充错话费了怎么办 手机版本太低安装不了支付宝怎么办 手机下载支付宝后找不到了怎么办 王者荣耀充值成功游戏未到账怎么办 银行卡号和密码都忘了怎么办 微信支付密码和银行卡号忘了怎么办 请问5位数的密码忘记了怎么办 苹果手机四位数密码忘记了怎么办 锡山教育app登陆密码忘了怎么办 新商盟手机订烟登录忘记密码怎么办 在qq上修改支付密码忘记怎么办 微信红包支付密码忘了怎么办 qq钱包绑定了别人的银行卡怎么办 用支付宝充手机话费怎么退款怎么办 我有个qq号丢了怎么办 微信红包密码输错了怎么办 qq钱包支付限额付不了款怎么办 电信手机没开流量被扣流量钱怎么办 运动鞋子买大了一码怎么办 淘宝直播间粉丝福利购优惠券怎么办 微信卡包的券不小心删了怎么办 0pp0手机官网手机总跳屏怎么办 很想买一部手机但是舍不得钱怎么办 自己没钱了还想贷款买手机怎么办 4g手机锁屏密码忘了怎么办 oppo手机锁屏密码忘了怎么办 三星手机锁屏密码忘了怎么办 网上买的手机想退了怎么办 沙棘排湿排毒后皮肤痒怎么办 做了沙棘排毒两次上上痒怎么办? 微信支付打款认证超时怎么办 微信上买东西钱付款了货没发怎么办 掌上道聚城王者轮回分解错了怎么办