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. SQL Server附加数据库拒绝访问

    打开要附加的数据库文件所在的文件夹,即扩展名为mdf的文件所在的文件夹,如下图所示:   右键单击mdf文件,选择“属性”,如下图所示:   单击“安全”选项卡,如下图所示:   单击“编辑”按钮,如 ...

  2. Java基础--多线程的方方面面

    1,什么是线程?线程和进程的区别是什么? 2,什么是多线程?为什么设计多线程? 3,Java种多线程的实现方式是什么?有什么区别? 4,线程的状态控制有哪些方法? 5,线程安全.死锁和生产者--消费者 ...

  3. spring 4 xxx 与jackson-dataformat.xxx类冲突

    这段时间,做一个新的工作流的开发,在开始之初,用的jbpm,后来发现jbpm现在开发有问题,不能引用官方的工作空间,所要工作流跑不起来,于是用了activiti工作流,在配置spring和activi ...

  4. gearmand的安装

    1.安装gperf libuuid-devel yum install -y gperf libuuid-devel 2.安装 libevent yum install libevent libeve ...

  5. __PUBLIC__模板文件路径配置

    __PUBLIC__ 默认指向 项目文件下的Public文件夹 注意: __PUBLIC__不是一个常量,只在模板中进行替换,__ROOT__是一个常量 项目文件路径 defined('__PUBLI ...

  6. C语言笔记(数组地址一些细节)

     一.数组的a+1和&a+1的区别 先看看测试代码: ]={}; printf(" sizeof(data) = %d.\n", sizeof(data)); printf ...

  7. Linux下设置静态IP和获取动态IP的方法

    Linux下为机器设置静态IP地址: vim  /etc/sysconfig/network-scripts/ifcfg-eth0 修改这个文件内容如下形式: # Intel Corporation ...

  8. __file__ __name__ __doc__ argv详解

    __file__:表示输出当前py文件的路径 __name__: 表示输出当前函数名称,是main()函数(入口函数),或者是其他函数 __doc__: 模块的对象,输出模块的版权信息,如:作者 ch ...

  9. net core 依赖注入问题

    net core 依赖注入问题 最近.net core可以跨平台了,这是一个伟大的事情,为了可以赶上两年以后的跨平台部署大潮,我也加入到了学习之列.今天研究的是依赖注入,但是我发现一个问题,困扰我很久 ...

  10. sql char类型的空处理

    对是varchar类型的数据进行不是空的判断时,可以采用 --<>''或者!='' int类型的数据可以采用 is not null,但是它对char类型的数据没用 distinct 用于 ...