JSTL标签使用方法

keyword: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 语言)操作动态数据是比較困难的。而採用标签和表达式语言相对easy一些, 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:out value=”${exception.massage}”/>

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

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

1.<c:if>

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

<c:if test=”${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:when test="${row.v_money<10000}">

初学下海

</c:when>

<c:when test="${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">

<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++;%>

</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" >

select player_name,money from tb_player order by money DESC LIMIT 10

</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:param value="<%=spID%>"/>

<sql:param value="<%=productID%>"/>

<sql:param value="1"/>

</sql:update>

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

<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: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>

四. 格式化标签

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

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

不足 3 位将以 0 补齐。

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

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

<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

补充知识点:

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>

jsp if else c标签 总结的更多相关文章

  1. 重温JSP学习笔记--JSTL标签库

    以前写jsp的时候对jstl标签库是有些抵触的,因为我觉得嵌入java代码的方式几乎无往不利,没有必要使用标签库,不过这次复习还是好好地学习了一下,发现这个还是很有用处的,用得好能省不少事,JSTL是 ...

  2. jsp 2种include标签的区别

    众所周知,jsp中有2种标签用于包含其他jsp或者文件 1.include指令,其实是java代码 <%@ include file="xxx.jsp"%> 2.jsp ...

  3. JSP 2.x 自定义标签

    JSP 1.x的标签,虽然使用起来非常灵活,但是比较复杂,JSP 2.x提供了一组简化的标签写法 SimpleTagSupport是SimpleTag接口的子类,同时支持参数和标签体,最核心的方法时d ...

  4. js 和 css 中 不能使用 jsp 页面中一些 标签 和 java 代码等,应注意

    js  和 css 中 不能使用 jsp  页面中一些 标签 和 java 代码等,应注意 如 ${ }  <%%>  等

  5. JSP入门之自定义标签

    第二部分简单讲解:主要讲解el表达式,核心标签库.本章主要讲解:自定义标签库:404页面,505页面,错误页面配置方法 全部代码下载:链接 1.JSP自定义标签: 自定义标签是用户定义的JSP语言元素 ...

  6. struts2使用jsp和<s:property>标签获取json格式的返回数据

    struts2使用jsp和<s:property>标签获取json格式的返回数据 1.struts2的action中 return "success"; 2.指向的返回 ...

  7. JSP自定义tld方法标签

    卧槽 我们可以通过tld文件,自定义一个方法标签,以便在页面中使用,目录通常放在WEB-INF下面的tlds文件夹: 引入方式示例,直接在jsp上引入tld标签文件: <%@ taglib pr ...

  8. 今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的解决了这个问题。

    今天做一个项目的时候,要在一个编辑的jsp页面的textarea标签设置value属性,结果发现他没有value属性,但是是编辑页面又必须要回显要修改的内容,所以在参考了w3cschool之后很轻松的 ...

  9. jsp页面中jstl标签详解

    JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一定要扎实. JSTL ...

随机推荐

  1. 加入强调语气,使用<strong>和<em>标签

    有了段落又有了标题,现在如果想在一段话中特别强调某几个文字,这时候就可以用到<em>或<strong>标签. 但两者在强调的语气上有区别:<em> 表示强调,< ...

  2. [个人原创]关于java中对象排序的一些探讨(一)

    有的时候我们需要将自己定义的对象,有序输出.因为一般我们程序的中间结果需要存储在容器里,那么怎样对容器中的对象按照一定次序输出就是程序员经常需要考虑的问题.本片文章探讨了怎样有序化输出容器中的对象的问 ...

  3. [Head First设计模式笔记]----命令模式

    命令模式定义:将“请求”封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象.命令模式也支持可撤销的操作. 类图: 适用设计方案举例:实现一种遥控器,该遥控器具有七个可编程的插槽(每个都可以指 ...

  4. rhel安装eclipse

    smb --> IDE --> 环境gcc(开发c) g++(开发c++)c++操作linux --> sqlite数据库linux平台自带sqlite数据库 基本SQL语言划分:D ...

  5. Java学习----方法的重载

    一个类中有多个同名的参数不一样的方法. 作用:可以根据不同的条件调用不同的方法. 注意:java不会因为方法的返回类型或者权限的不同而判断为不同的两个方法. public class Student ...

  6. jQuery中事件冒泡问题及处理

    在为一个元素添加事件时,经常会出现的一个问题就是事件冒泡.例如在div中嵌套了一个span元素,为div和span都添加了事件点击,如果点击span会导致span和div元素相继触发监听事件.顺序是从 ...

  7. C# 根据IP查询地址归属地

    必备文件:IPLocation.dll.QQWry.Dat 下载地址:http://pan.baidu.com/s/1jG1dlOy (可百度下载) 之前有过将 QQWry.Dat 转为 Access ...

  8. socket本地模拟UDP 服务器+客户端(三)

    UDP: TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据.相对TCP,UDP则是面向无连接的协议. 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包. ...

  9. spinner 下拉框控件

    spinnerMode=dropdown时,为下拉模式spinnerMode=dialog时,会在界面中间弹出Android:popupBackground=”#f0000000”,可以去除spinn ...

  10. iOS开发网络篇—XML数据的解析

     iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...