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它是什么?

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

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

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

  • 配置JSTL
  1. 包括两个JAR文件,jstl.jar和standard.jar。
  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标签,要使用taglib指令,指定引用的标签库如下:

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

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

1.<c:out>

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

2.<c:set>

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

比如:<c:set var = "userName" value = "李四" scope = "session">这样就相当于设置了session。

3.<c:remove>

相对<c:set>其作用是移除范围变量。

比如:<c:remove var = "userName" 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.message}">相当于: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"><br/>

<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标签库

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/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>

  • 格式化标签

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

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

时间: 2024-10-10 15:24:29

JSTL(必会使用)的相关文章

PHP中实现数字金额到中文大写字符的转换7VeH

Yann LeCun其人,Facebook AI研究院(FAIR)负责人,深度学习三架马车之一,卷积神经网络(CNN)之父,享受得了万人敬仰,也在无人问津的寒冬挣扎过. 他于1960年出生在巴黎,1987-1989年博士后期间拜在大神Geoffrey Hinton门下,1988年被Larry Jackel招入贝尔实验室,1989年提出在计算机视觉中使用卷积神经网络,其后此项技术被用于在自动取款机上读取支票,影响至今.1998年又提出基于梯度的学习. 或许是天性,又或许是经历过神经网络和深度学习备

JSTL&amp;EL(程序员必看之一)

EL表达式 可以在jsp页面中减少大量的Java代码.Expression Language,它是一种借鉴了javaScript和XPath的表达式语言. EL表达式定义了一系列的隐含对象和操作符,使开发人员能够很方便地访问页面的上下文,以及不同作用域内的对象 而无须在JSP页面嵌入Java代码,从而使开发人员即使不熟悉Java也能轻松地编写JSP程序. EL表达式的特点和使用范围 EL表达式提供了在Java代码之外,访问和处理应用程序数据的功能,通常用于在某个作用域(page,request,

jstl的自定义标签

1)作用:当jsp的内置标签或者jstl不满足我们,这时需要自定义标签2)三个步骤:  需求: 使用自定义标签输出客户的ip地址SimpleTag接口的方法:doTag():执行标签的方法,由web服务器调用getParent(): 得到父标签.setJspBody(JspFragment jspBody)传入标签主体内容.由web服务器调用setJspContext(JspContext pc)传入PageContext.由web服务器调用setParent(JspTag parent) 传入

自己封装JSTL 自定义标签

第一步,做一个类,派生自SimpleTagSupport,"alt+/"选重写doTag()方法. public class TestTag extends SimpleTagSupport { private String outerTagName="p"; public void setOuterTagName(String outerTagName) { this.outerTagName = outerTagName; } private int count

JSTL标签库的使用语法

在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JSTL的迭代标签可以在很大的程度上简化迭代操作. JSTL所支持的迭代标签有两个,分别是<c:forEach>和<c:forTokens>.在这里介绍的是<c:forEach>标签. 简单点说,<c:forEach>标签的作用就是迭代输出标签内部的内容.它既可以进行

JSTL标签——核心标签库

JSP 标准标记库( Standard Tag Library , JSTL)是实现Web应用程序中常见的通用功能的定制标签库集,程序员通过JSTL标签避免在JSP页面中使用脚本. JSTL是一个标准的已制定好的标签库,它可以应用到很多领域. 如:基本输入输出.流程控制.循环.XML文件剖析.数据库查询及国际化和文字格式标准化的应用等. JSTL所提供的标签库主要分为五类: JSTL 前置名称 URI 范例 核心标签库 c http://java.sun.com/jsp/jstl/core <c

jsp中的JSTL与EL表达式用法

JSTL (JSP Standard Tag Library ,JSP标准标签库) JSTL标签库分为5类:JSTL核心标签库.JSTL函数标签库.数据库标签库.I18N格式化标签库.XML标签库. JSTL的核心标签库主要包括:表达式操作.流程控制.迭代操作和URL操作.以下是JSTL常用标签的用法总结: 一.表达式操作 1.<c:out> 作用:用于显示数据的内容.语法1:没有本体内容 <c:out value="value" [escapeXml="{

Jstl之核心标签库与格式标签库使用

JSTL(JSP Standard Tag Library.JSP标准标签库)是一个不断完好的开放源码的JSP标签库.是由apache的jakarta小组来维护的.JSTL仅仅能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x.在JSP 2.0中也是作为标准支持的. JSTL 1.0 公布于 2002 年 6 月,由四个定制标记库(core.format.xml 和 sql)和一对通用标记库验证器(ScriptFreeTLV 和 PermittedTaglibsT

JSTL标签用法 详解

在JSP的开发中,迭代是经常要使用到的操作.例如,逐行的显示查询的结果等.在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出.现在,通过JSTL的迭代标签可以在很大的程度上简化迭代操作. JSTL所支持的迭代标签有两个,分别是<c:forEach>和<c:forTokens>.在这里介绍的是<c:forEach>标签. 简单点说,<c:forEach>标签的作用就是迭代输出标签内部的内容.它既可以进行