第7章 JSTL

合集下载

JSTL标签用法详解

JSTL标签用法详解

JSTL标签用法详解在JSP的开发中,迭代是经常要使用到的操作。

例如,逐行的显示查询的结果等。

在早期的JSP中,通常使用Scriptlets来实现Iterator或者Enumeration对象的迭代输出。

现在,通过JSTL的迭代标签可以在很大的程度上简化迭代操作。

JSTL所支持的迭代标签有两个,分别是<c:forEach>和<c:forTokens>。

在这里介绍的是<c:forEach>标签。

简单点说,<c:forEach>标签的作用就是迭代输出标签内部的内容。

它既可以进行固定次数的迭代输出,也可以依据集合中对象的个数来决定迭代的次数。

<c:forEach>标签的语法定义如下所示。

<c:forEach var='name' items='expression' varStatus='name' begin='expression' end='expression' step='expression'>body content</c:forEach><c:forEach>标签具有以下一些属性:l var:迭代参数的名称。

在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。

类型为String。

l items:要进行迭代的集合。

对于它所支持的类型将在下面进行讲解。

l varStatus:迭代变量的名称,用来表示迭代的状态,可以访问到迭代自身的信息。

l begin:如果指定了items,那么迭代就从items[begin]开始进行迭代;如果没有指定items,那么就从begin开始迭代。

它的类型为整数。

l end:如果指定了items,那么就在items[end]结束迭代;如果没有指定items,那么就在end结束迭代。

实验内容:使用EL及JSTL

实验内容:使用EL及JSTL

XXXX 大学计算机学院实验报告计算机学院2017 级软件工程专业 5 班指导教师XXX 学号姓名XXX 2019 年10 月30 日成绩实验内容或上机调试程序实验:使用EL表达式和JSTL实现将文本框中的内容输出到页面的功能,在此页面的文本框中输入内容,单击页面提交按钮之后,输入框以及按钮消失,文本框中输入的内容显示到页面(操作及显示效果均在同一页面完成)①核心代码如下所示:<!-- 表单 --><c:set value="1"var="visitContent"property="visitContent"/><!-- 表单提交后,表单内输入框如果为null,就隐藏输入框 --><c:if test="${erName==null}"><form action="${pageContext.request.contextPath}/index.jsp">userName:<input type="text"name="userName"><br/>userPassword:<input type="text"name="userPassword"><input type="submit"value="提交"><input type="reset"value="重置"></form></c:if><hr/><!-- 使用EL表达式显示输入框中的内容 -->userName:${erName} <br/>userPassword:${erPassword}②完成效果如下所示:图表单提交之前的效果实验内容或上机图表单提交后前的效果调试程序。

JavaWeb编程技术(沈泽刚版)教材习题参考答案

JavaWeb编程技术(沈泽刚版)教材习题参考答案

第4章Java Web编程习题解析4.1 第1章习题解析1. 略。

2. 答:URL称为统一资源定位符,URL通常由4部分组成:协议名称、页面所在主机的DNS名、可选的端口号和资源的名称。

URI称为统一资源标识符,是以特定语法标识一个资源的字符串。

URI由模式和模式特有的部分组成,它们之间用冒号隔开,一般格式如下:schema:schema-specific-partURI是URL和URN的超集。

3. 答:①是URL,①和②都是URI,③是URN4. 答:动态Web文档技术包括服务器端动态文档技术和客户端动态文档技术,前者包括CGI技术、服务器扩展技术和HTML页面中嵌入脚本技术。

其中HTML页面中嵌入脚本技术包括ASP、PHP和JSP技术。

最流行的客户端动态文档技术是在HTML页面中嵌入JavaScript脚本代码。

使用JavaScript可以设计交互式页面。

与服务器端动态文档不同,JavaScript脚本是在客户端执行的。

5. 答:Servlet是用Servlet API开发的Java程序,它运行在Servlet容器中。

Servlet容器是运行Servlet的软件,主要用来扩展Web服务器的功能。

6. 答:开发Servlet的一般步骤包括:(1)编写Servlet源程序;(2)编译;(3)将Servlet部署到Servlet容器中;(4)访问执行Servlet。

7. 答:<tomcat-install>\lib\servlet-api.jar文件。

8. 答:部署描述文件名是web.xml,它是XML文件,应该存放在Web应用程序的\WEB-INF目录中。

9. 答:当服务器找不到用户请求的资源时将发生404错误。

10. 答:JSP页面是嵌入了Java脚本元素的HTML页面。

11. 答:Servlet主要用来实现业务逻辑和控制逻辑,JSP页面主要用来实现表示逻辑。

Java Web 编程习题解析第4章 4.2 第2章习题解析1. 答:Servlet 接口定义了下面5个方法:public void init(ServletConfig config)public void service(ServletRequest request, ServletResponse response) throws ServletException, IOExceptionpublic void destroy()public ServletConfig getServletConfig()public String getServletInfo()2. 答:Servlet 是在容器中运行的组件,有一个从创建到销毁的过程,其中包括加载和实例化、初始化、提供服务以及销毁几个阶段。

跟我学J2EE JSP Web开发技术中的JSTL标签库及应用技术

跟我学J2EE JSP Web开发技术中的JSTL标签库及应用技术
能够最大程度地提高了Web应用在各应用服务器之间的移植。
(2)简化了JSP和Web应用程序的开发 8、JSTL中对数据实现基本操作的标签
主要包含有四个标签: <c:out> 、 <c:set> 、 <c:remove> 和 <c:catch>
9、JSTL中的<c:out>标签及应用 (1)主要的功能
(2)其中<%@ taglib uri="/jsp/jstl/core" prefix="c" %>声明了使用的taglib
它的前缀(prefix)是"c",那么在后面的代码中使用 "<c:"标示来使用标签,如: <c:if test="${sessionScope.test== 'joseph'}">${sessionScope.test}<br></c:if>
10、JSTL中的<c:set>标签及应用 (1)<c:set>标签用于保存数据 (2)它有如下属性
(3)应用示例
(4)将数据保存到一个已经存在的Map集合中的一样示例
<% java.util.Map oneMapObjectName= new java.util.HashMap(); request.setAttribute("oneMapKeyName", oneMapObjectName); %> <c:set value="杨晓波" target="${oneMapKeyName}" property="loginName" ></c:set> ${oneMapKeyName["loginName"] }

JSP试题及答案

JSP试题及答案

第1章WEB开发环境(1)下列关于WEB开发说法正确的是.A)Web是图形化的和易于导航的B)Web与平台无关C)Web是分布式的D)Web 是动态的E)Web 是静态的(2)下列关于Tomcat说法正确的是.A)Tomcat是一种编程语言 B)Tomcat是一种开发工具C)Tomcat是一种编程思想D) Tomcat是一种开编程规范E)Tomcat是一个免费的开源的Serlvet容器(3)下列关于Tomcat个目录说法错误的是.A)bin目录--包含启动/关闭脚本B)conf目录—-包含不同的配置文件C)Lib目录-—包含Tomcat使用的JAR文件D)webapps目录—-包含web项目示例,发布web应用时,默认情况下web文件夹放于此目录下E)work目录--包含web项目示例,当发布web应用时,默认情况下把web文件夹放于此目录下(4)下列关于HTTP协议说法正确的是。

A) HTTP是一种请求/响应式的协议B)HTTP请求消息中Accept表示浏览器可接受的MIME类型C)HTTP请求消息中Accept-Encoding表示浏览器能够进行解码的数据编码方式D)HTTP请求消息中Accept-Language表示浏览器所希望的语言种类E)HTTP请求消息中Host表示初始URL中的主机和端口.(5)下列对于JSP说法中正确的是。

A) JSP是Sun公司推出的新一代站点开发语言B)JSP采用标识简化页面开发C)JSP完全解决了目前ASP、PHP的一个通病—-脚本级执行D) JSP将内容的生成和显示进行分离E)JSP强调可重用的组件第2章JSP编译指令(1)下列关于JSP编译指令说法错误的是。

A)编译指令用于从JSP发送一个信息到容器上B)编译指令用来设置全局变量、声明类要实现的方法和输出内容的类型等C)编译指令向客户端产生任何输出D)编译指令所有的指令都在整个JSP页面内有效E)编译指令元素为编译阶段提供了全局信息(2)下面关于page指令说法中错误的是。

jstl用法

jstl用法

JSTL用法一、什么是JSTLJavaServer Pages Standard Tag Library(JSTL)是一个JSP规范的标准标签库,它为JSP页面提供了一组标签和函数,用于简化JSP页面的开发和维护。

JSTL提供了核心标签库、格式化标签库、SQL标签库和XML标签库等,可以帮助开发者更方便地处理数据、格式化输出、执行SQL查询和处理XML数据等任务。

二、JSTL的引入要使用JSTL,首先需要在项目中引入JSTL的相关依赖。

在Maven项目中,可以通过在pom.xml文件中添加以下依赖来引入JSTL:<dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>引入依赖后,就可以在JSP页面中使用JSTL的标签了。

三、核心标签库1. <c:out>标签<c:out>标签用于输出表达式的值,可以防止XSS攻击。

它的使用方式如下:<c:out value="${expression}" />其中,expression是一个JSP表达式,可以是一个变量、一个属性或者一个EL表达式。

<c:out>标签会将expression的值进行HTML转义,以防止恶意代码注入。

2. <c:set>标签<c:set>标签用于设置一个变量的值,可以在JSP页面中使用这个变量。

它的使用方式如下:<c:set var="variableName" value="expression" />其中,variableName是变量的名称,expression是一个JSP表达式,用于给变量赋值。

河南理工大学JAVA WEB应用开发(JSP)试题及答案

河南理工大学JAVA WEB应用开发(JSP)试题及答案

第1章WEB开发环境(1)下列关于WEB开发说法正确的是。

A)Web是图形化的和易于导航的B)Web与平台无关C)Web是分布式的D)Web 是动态的E)Web 是静态的(2)下列关于Tomcat说法正确的是。

A)Tomcat是一种编程语言B)Tomcat是一种开发工具C)Tomcat是一种编程思想D)Tomcat是一种开编程规范E)Tomcat是一个免费的开源的Serlvet容器(3)下列关于Tomcat个目录说法错误的是。

A)bin目录--包含启动/关闭脚本B)conf目录——包含不同的配置文件C)Lib目录--包含Tomcat使用的JAR文件D)webapps目录--包含web项目示例,发布web应用时,默认情况下web文件夹放于此目录下E)work目录--包含web项目示例,当发布web应用时,默认情况下把web文件夹放于此目录下(4)下列关于HTTP协议说法正确的是。

A)HTTP是一种请求/响应式的协议B)HTTP请求消息中Accept表示浏览器可接受的MIME类型C)HTTP请求消息中Accept-Encoding表示浏览器能够进行解码的数据编码方式D)HTTP请求消息中Accept-Language表示浏览器所希望的语言种类E)HTTP请求消息中Host表示初始URL中的主机和端口。

(5)下列对于JSP说法中正确的是。

A)JSP是Sun公司推出的新一代站点开发语言B)JSP采用标识简化页面开发C)JSP完全解决了目前ASP、PHP的一个通病——脚本级执行D)JSP将内容的生成和显示进行分离E)JSP强调可重用的组件第2章JSP编译指令(1)下列关于JSP编译指令说法错误的是。

A)编译指令用于从JSP发送一个信息到容器上B)编译指令用来设置全局变量、声明类要实现的方法和输出内容的类型等C)编译指令向客户端产生任何输出D)编译指令所有的指令都在整个JSP页面内有效E)编译指令元素为编译阶段提供了全局信息(2)下面关于page指令说法中错误的是。

JSTL详解

JSTL详解

java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生了自定义标签库。

JSTL标签库可分为5类:∙核心标签库∙I18N格式化标签库∙SQL标签库∙XML标签库∙函数标签库八、JSTL 表达式在页面的配置。

1、导入standard.jar和jstl.jar。

2、在JSP页面上引入 JSTL 的引用。

如:Java代码1.<%@ taglib uri="/jsp/jstl/core" prefix="c" %>九、JSTL 的使用。

1、核心标签库JSTL的核心标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。

使用这些标签能够完成JSP页面的基本功能,减少编码工作。

如:∙表达式控制标签:out标签、set标签、remove标签、catch标签。

∙流程控制标签:if标签、choose标签、when标签、otherwise标签。

∙循环标签:forEach标签、forTokens标签。

∙URL操作标签:import标签、url标签、redirect标签。

下面,演示各个标签的使用。

1.1、表达式控制标签。

(1)、<c:out>标签:用来显示数据对象(字符串、表达式)的内容或结果。

相当于<% out.println(“字符串”)%> 或 <%=表达式%>。

语法如下:∙【语法1】:<c:out value=”要显示的数据对象” [escapeXml=”true|false”] [default=”默认值”]>∙【语法2】:<c:out value=”要显示的数据对象” [escapeXml=”true|false”]>默认值</c:out>∙【语法1】:Java代码Java代码Java代码Java代码提示:从功能上分语法1和语法2、语法3和语法4的效果是一样的只是把value值放置的位置不同至于使用那个根据个人的喜爱,语法1和语法2是向scope范围内存储一个值,语法3和语法4是给指定的JavaBean赋值。

Java Web应用开发技术实用教程 王红 第7章 JSTL新PPT课件

Java Web应用开发技术实用教程 王红 第7章 JSTL新PPT课件

5
01.12.2020
7.2 核心标记库
7.2.1 通用标记 7.2.2 条件标记 7.2.3迭代标记 7.2.4 URL相关标记
6
01.12.2020
7.2 核心标记库(续)
核心标记库主要用于:基本输入输出、流程控 制、迭代操作和URL 操作。详细的分类见课 本表7- 2所示
在JSP中使用JSTL中的核心标记库时,必须 使用<%@ taglib %>指令,并且设定prefix和 uri的值,通常设定如下: <%@ taglib prefix="c" uri="" %>
(2)value参数可以是字符串也可以是EL表达式。
(3)<c:out value="${notex}" default="这个值不存 在"/>中,因为notex对象不存在而显示它的默认值。
10
01.12.2020
7.2.1 通用标记(续)
<c:set> <c:set>主要用来将变量存储至某个范围(page,request,session,
3
01.12.2020
7.1 JSTL简介(续)
JSTL的安装: 1. 从下载实现好的JSTL压缩文件,将jstl.jar和
standard.jar复制到你的Web应用目录\WEBINF\lib中。 2.拷贝JSTL的TLD文件到Web应用目录\WEBINF目录中。 3.修改web.xml文件以配置这些TLD文件。
Java Web开发技术
第7章 JSTL
第七章 JSTL
7.1 JSTL简介 7.2 核心标记库 7.3 I18N格式标记库 7.4 SQL标记库 7.5 函数标记库 7.6 小结

JSTL教程

JSTL教程

JSTL教程jstl教程(转)星期一,2022年5月21日09:35jsp标准标记库(jspstandardtaglibrary,jstl)是一个实现web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、xml操作以及数据库访问。

在developerworks上其新系列的第一篇文章中,软件工程师markkolb向您展示了如何使用jstl标记来避免在jsp页面中使用脚本编制元素。

您还将了解如何通过从表示层删除源代码来简化软件维护。

最后,您将了解jstl经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对jstl操作指定动态属性值。

Java服务器页面(JSP)是J2EE平台的标准表示层技术。

JSP技术提供脚本元素和操作,用于执行用于动态生成页面内容的计算。

脚本元素允许在JSP页面中包含程序源代码,在响应用户请求呈现页面时可以执行这些代码。

操作将计算操作封装到类似HTML或XML标记的标记中,这些标记通常包含在JSP页面的模板文本中。

JSP规范只定义了一些操作作为标准,但是从JSP 1开始,开发人员就可以通过定制标记库来创建自己的操作。

jsp标准标记库(jstl)是jsp1.2定制标记库集,这些标记库实现大量服务器端java应用程序常用的基本功能。

通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,jstl使jsp作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。

当然,您可以使用JSP脚本元素(scriptlet、表达式和声明)来完成这些任务。

例如,可以使用三个Scriptlet来实现条件内容,如清单1所示。

然而,由于脚本元素依赖于在页面中嵌入程序源代码(通常是java代码),因此使用这些脚本元素的JSP页面的软件维护任务的复杂性大大增加。

例如,清单1中的scriptlet示例严格依赖于大括号的正确匹配。

如果无意中引入了语法错误,条件内容中的其他scriptlet嵌套可能会造成严重损害,并且在JSP容器编译页面时,可能很难使生成的错误消息有意义。

JSTL详解

JSTL详解

JSTL详解JSTL标签库的使⽤是为类弥补html表的不⾜,规范⾃定义标签的使⽤⽽诞⽣的。

在告别modle1模式开发应⽤程序后,⼈们开始注重软件的分层设计,不希望在jsp页⾯中出现java逻辑代码,同时也由于⾃定义标签的开发难度较⼤和不利于技术标准化产⽣了⾃定义标签库。

JSTL 标签库可分为5类:核⼼标签库I18N格式化标签库SQL标签库XML标签库函数标签库本章将对这些内容⼀⼀讲述。

9.1 核⼼标签库JSTL的核⼼标签库标签共13个,从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。

使⽤这些标签能够完成JSP页⾯的基本功能,减少编码⼯作。

(1)表达式控制标签:out标签、set标签、remove标签、catch标签。

(2)流程控制标签:if标签、choose标签、when标签、otherwise标签。

(3)循环标签:forEach标签、forTokens标签。

(4)URL操作标签:import标签、url标签、redirect标签。

在JSP页⾯引⼊核⼼标签库的代码为:<%@ taglib prefix="c" uri="/jsp/jstl/core" %>下⾯将按照功能分类,分别讲解每个标签的功能和使⽤⽅式。

9.2.1 表达式控制标签表达式控制分类中包括<c:out>、<c:set>、<c:remove>、<c:chtch>4个标签,现在分别介绍它们的功能和语法。

1.<c:out>标签【功能】:⽤来显⽰数据对象(字符串、表达式)的内容或结果。

在使⽤Java脚本输出时常使⽤的⽅式为:<% out.println(“字符串”)%><%=表达式%>在web开发中,为了避免暴露逻辑代码会尽量减少页⾯中的Java脚本,使⽤<c:out>标签就可以实现以上功能。

JSTL标签详解

JSTL标签详解

JSTL标签详解JSTL(JSP标准标签库)介绍JSTL(JSP标准标签库)介绍前言从JSP 1.1规范开始,JSP就支持在JSP中使用自定义标签了,自定义标签的广泛使用造成了程序员重复定义,这样就促成了JSTL (JavaServer Pages Standard Tag Library)的诞生。

JSTL简介JSTL是一个不断完善的开放源代码的JSP标签库,是由apache 的jakarta小组来维护的。

JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上,如tomcat 4.x。

但是在即将推出的JSP 2.0中是作为标准支持的。

JSTL目前的最新版本为,最终发布版为1.0。

JSTL包含两个部分:标签库和EL(Expression Language表达式语言)语言。

标签库目前支持四种标签:Core支持JSP中的一些基本的操作;XML processing支持XML文档的处理;I18N capable formatting支持对JSP页面的国际化;Database access (SQL)支持JSP对数据库的操作。

由于本人水平有限,本文仅介绍Core标签,如有兴趣,可一起探讨其它三种标签的使用与扩充。

EL语言介绍EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。

在JSTL中,EL语言在JSTL属性值中使用。

EL语言只能通过建立表达式${exp1}来进行调用。

在属性值中使用表达式有三种方式。

1、 value属性包含一个表达式<some:tag value="${expr}"/>在这种情况下,表达式值被计算出来并根据类型转换规则赋值给v alue属性。

比如:<c:out value="${username}" />中的${usernam e}就是一个EL,它相当于JSP语句<%=request.getAttribute(“user name”)%>或<%=session.getAttribute(“username”)%>2、 value属性包含一个或多个属性,这些属性被文本分割或围绕<some:tag value="some${expr}${expr}text${expr}"/>在这种情况下,表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),并将结果赋值给value属性3、 value属性仅仅包含文本<some:tag value="sometext"/>在这种情况下,字符串型属性value将根据类型转换规则转换为标签所希望的类型。

JSP试题及答案

JSP试题及答案

JSP试题及答案第6章自定义标签一、选择题:(1)下面对于标签的说法中错误的是。

A)JSP标签用于调用JavaBean组件中的操作和执行B)JSP标签简化了JSP页面的开发和维护C)JSP技术没有提供了在自定义标签中封装其他动态功能的机制D)自定义标签通过封装反复执行的任务使它们可以在多个应用程序中重复使用E)自定义标签通常是以标签库的形式出现的(2)自定义标签有丰富的功能。

它们可以。

A)通过从调用页面传递的属性进行定制B)访问JSP页面可以使用的所有对象C)修改由调用页面生成的响应D)彼此通信。

E)彼此嵌套(3)当我们要在JSP页面中使用自定义标签时需要。

A)在tld文件中定义标签B)创建一个标签处理器C)引入这个标签的标签库,并指定前缀名D)在JSP页面中使用page指令E)在JSP页面中使用taglib指令(4)下面关于Tag接口说法中正确的是。

A)setPageContext()方法为初始化方法B)setParent()方法用来设置标签的上一级标签C)doStartTag()方法返回EVAL_BODY_INCLUDE和SKIP_BODY,返回EVAL_BODY_INCLUDE计算正文内容,返回SKIP_BODY不计算body。

D)doEndTag方法,EVAL_P AGE或者SKIP_P AGE,当返回值为EVAL_P AGE,jsp容器将继续执行jsp页面的内容,否则不执行E)release()方法用来释放标签程序占用的任何资源(5)下列关于BodyTagAPI说法中错误的是。

A)setPageContext(pageContext)用来设置页面的上下文对象B)setParent(Tag) 用来设置上一级标签,如果没有上一级标签C)doAfterBody()用来设置缓冲区,这个缓冲区可以存放解析后的bodyD)setBodyContent(BodyContent) 用来先计算正文内容后,如果doStartTag返回的是EVAL_BODY_INCLUDE,那么执行这个方法,如果此方法返回的是IterationTag.EV AL_BODY_AGAIN,那么就在此计算正文内容,然后再调用此方法E)doInitBody()用来为setBodyContent()方法做准备工作第7章JSTL一、选择题:(1)下列对于JSTL的说法正确的是。

JSTL手册

JSTL手册

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

core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。

它还提供了用来生成和操作URL 的标记。

format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。

它还支持使用本地化资源来进行JSP 页面的国际化。

xml 库包含一些标记,这些标记用来操作通过XML 表示的数据。

sql 库定义了用来查询关系数据库的操作。

JSTL的特性1、在应用程序服务器之间提供了一致的接口,最大程序地提高了WEB应用在各应用服务器之间的移植。

2、简化了JSP和WEB应用程序的开发。

3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet代码的程序。

4、允许JSP设计工具与WEB应用程序开发的进一步集成。

JSTL应用步骤1.准备jstl下载到standard.jar和jstl.jar2.创建Web应用创建一个web应用,产生WEB-INF等系列文件3.jstl包引用将standard.jar和jstl.jar拷至WEB-INF\lib下4.设置web.xmlweb.xml头格式如下:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance" version="2.4"xsi:schemaLocation="/xml/ns/j2ee/xml/ns/j2ee/web-app_2_4.xsd">如果Web服务窗口默认支持EL这步过。

JSTL标签库

JSTL标签库

<c:param>标签
<c:param>标签用来传递参数,其包含两个参数。<c:param> 包含两个属性name和value。 < c:param >的语法格式如下。 <c:param name=“参数名” value=“参数值”>
I18N格式化标签库
在JSP页面中要使用到格式化标签,必须使用<%@taglib%>指令, 指定格式化标签。代码如下。 <%@ taglib prefix="fmt" uri="/jsp/jstl/fmt"%>
<c:import>标签
<c:import>可以把其他静态或动态的文件包含到本身的JSP网页中。 它和JSP动作指令的<jsp:include>最大的差别在于:<jsp:include>只能包 含和自己在同一Web application下的文件;而<c:import>除了能够包含和 自己的同一Web application的文件外。也可以包含不同Web application或 者其他网站的文件。 <c:import>的语法格式如下。 <c:import url=”url” [context=”context”] [var=”varName”] [scope=”{page | request | session | application}”] [charEncoding=”charEncoding”]> 本体内容 </c:import> 或者。 <c:import url=”url” [context=”context”] varReader=”varReaderName” [charEncoding=”charEncoding”]> 本体内容 </c:import>

实验7-表达式语言与JSTL

实验7-表达式语言与JSTL

实验7(1)表达式语言的使用一、实验目的1. 了解表达式语言的功能;2. 掌握表达式语言的使用。

二、实验原理表达式语言(EL)是JSP 2.0新增的功能。

它是一种简洁的数据访问语言,通过它可以在JSP页面中方便地访问应用程序数据,无需使用JSP表达式(<%=和%>)。

EL的目标是使动态网页的设计、开发和维护更加容易。

EL的特点是访问数据可以使用点(.)运算符或方括号([])运算符;可以访问隐含对象;有自己的运算符构造表达式;可以使用Java语言编写的函数等。

三、实验容与步骤(一)表达式语言运算符的使用下面的JSP页面operator.jsp演示了EL运算符的使用:<% page contentType="text/html;charset=gb2312" %><html><head><title>JSP 2.0 Expression Language - Basic Arithmetic</title></head><body><h1>JSP 2.0 表达式语言- 基本算术运算符</h1><hr>该例说明了基本的表达式语言的算术运算符的使用,其中包括加(+),减(-), 乘(*),除(/ 或div), 取余(% 或mod)。

<br><blockquote><code><table border="1"><thead><td><b>EL 表达式</b></td><td><b>结果</b></td></thead><tr><td>\${1}</td> <td>${1}</td> </tr><tr> <td>\${1 + 2}</td> <td>${1 + 2}</td> </tr><tr> <td>\${1.2 + 2.3}</td> <td>${1.2 + 2.3}</td> </tr><tr> <td>\${1.2E4 + 1.4}</td> <td>${1.2E4 + 1.4}</td> </tr><tr> <td>\${-4 - 2}</td> <td>${-4 - 2}</td> </tr><tr> <td>\${21 * 2}</td> <td>${21 * 2}</td> </tr><tr> <td>\${3/4}</td> <td>${3/4}</td> </tr><tr> <td>\${3 div 4}</td> <td>${3 div 4}</td> </tr><tr> <td>\${3/0}</td> <td>${3/0}</td> </tr><tr> <td>\${10%4}</td> <td>${10%4}</td> </tr><tr> <td>\${10 mod 4}</td> <td>${10 mod 4}</td> </tr><tr> <td>\${(1==2) ? 3 : 4}</td> <td>${(1==2) ? 3 : 4}</td> </tr></table></code></blockquote></body></html>图7.1 operater.jsp页面的运行结果(二)访问作用域变量编写一个名为EmployeeBean的JavaBean,其中包括3个属性eno表示雇员号、ename表示雇员名和ecompany表示雇员公司名。

JSTL的使用

JSTL的使用

JSTL的使用文章分类:Web前端JSTL是什么JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。

JSTL1.0 由四个定制标记库(core、format、xml 和 sql)和一对通用标记库验证器组成。

core 标记库提供了定制操作,通过限制了作用域的变量管理数据,以及执行页面内容的迭代和条件操作。

它还提供了用来生成和操作 URL 的标记。

format 标记库定义了用来格式化数据(尤其是数字和日期)的操作。

它还支持使用本地化资源束进行JSP页面的国际化。

xml 库包含一些标记,这些标记用来操作通过XML表示的数据,而 sql 库定义了用来查询关系数据库的操作。

两个 JSTL 标记库验证器允许开发人员在其 JSP 应用程序中强制使用编码标准。

如果要使用JSTL,则必须引用jstl.jar和 standard.jar两个包。

为什么要用JSTL我们JSP用于开发信息展现页非常方便;也可以嵌入java代码(scriptlet、表达式和声明)代码用来实现相关逻辑控制。

看下面程序。

但这样做会带来如下问题: jsp维护难度增加;出错提示不明确,不容易调试;分工不明确;(即jsp开发者是美工,也是程序员);最终增加程序的开发成本;解决上面的问题可以使用定制标记库,JSTL使JSP开发者可以减少对脚本元素的需求,甚至可以不需要它们,从而避免了相关的维护成本。

使分工更明确。

Html代码1.<% if (session.getAttribute(“user”).equals(“member”)) { %>2.<p>Welcome, member!</p>3.<% } else { %>4.<p>Welcome, guest!</p>5.<% } %>JSTL一般配合EL一起使用,因此先看看EL.JSTL部署在EE应用程序中部署JSTL有两种方式:已存在的工程上部署将jstl.jar和standard.jar两个包考到现有工程WebRoot / WEB-INF / lib 目录下将相关的 .tld文件考到现有工程 WebRoot / WEB-INF 目录下;也可通过eclipse在已存在工程上部署新建工程的时候直接部署在JSP使用JSTL-core标签库core在jsp中的使用:在 web.xml 中添加Xml代码1.<jsp-config>2.<taglib>3.<taglib-uri>/jsp/jstl/core</taglib-uri>4.<taglib-location>/WEB-INF/c.tld</taglib-location>5.</taglib>6.</jsp-config>在jsp文件中添加<%@ taglib prefix=“c” uri=“/jsp/jstl/core” %>或<%@ taglib prefix="c" uri="/WEB-INF/c.tld" %>使用<c:out value=“HelloWorld” />Core的操作作用域变量标签获取输出作用域中变量.<c:out > 属性: value [default] [escapeXml]定义作用域中变量<c:set > 属性: value var [scope]删除作用域中变量<c:remove > 属性: var [scope]Core的条件控制标签单分支条件<c:if > 属性:test [var] [scope]多分支条件<c:choose ><c:when > 属性: test<c:otherwise >Core的其它标签输出转换成的URL:<c:url > 属性:value [context] [var] [scope]和<jsp:include >相似用于包含其它页面的内容:<c:import >属性:url [context] [charEncoding] [var] [scope]重定向<c:redirect >属性: url [context]与<c:url><c:import><c:redirect>配合使用,用于传参<c:param >属性: name valueCore的循环控制标签实现简单循环<c:forEach > var='item' begin='5' end='10' step='2‘ varStatus=‘’ 实现迭代(遍历)<c:forEach > items='' var='item‘ varStatus=‘’属性varStatus和var相似设置一个作用域变量;只是varStatus作用域变量中存的是包括运行状态的对象;此对象包含如下属性:current index count first last begin end step简单循环Html代码1.<%@ page language="java"contentType="text/html; charset=GBK"%>2.<%@ taglib prefix="c"uri="/WEB-INF/c.tld" %>3.<html>4.<head>5.<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>6.<title>testjstl1</title>7.</head>8.<body>9.<c:forEach var="i"step="1"begin="1"end="100">10.${i} <br>11.</c:forEach>12.</body>13.</html>循环迭代Html代码1.<%@ page language="java"contentType="text/html; charset=GBK"%>2.<%@ taglib prefix="c"uri="/WEB-INF/c.tld" %>3.<html>4.<head>5.<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>6.<title>testjstl1</title>7.</head>8.<body>9.<c:forEach var="mcBean"items="${mcList}"varStatus="mcStatus">10.当前遍历索引:${mcStatus.index} ; 商品名:${mcBean.sname} ; .... <br>11.</c:forEach>12.</body>13.</html>在JSP使用JSTL-format标签库format在jsp中的使用:在 web.xml 中添加Xml代码1.<jsp-config>2.<taglib>3.<taglib-uri>/jstl/fmt</taglib-uri>4.<taglib-location>/WEB-INF/fmt.tld</taglib-location>5.</taglib>6.</jsp-config>在jsp文件中添加<%@ taglib prefix="fmt" uri="/jstl/fmt" %>使用<fmt:formatDa te value=“” pattern=“yyyy-MM-dd” />Format常用标签格式化输出日期:<fmt:formatDate > value type var patterntype取值:short: 10/19/00 6:07 PMmedium: Oct 19, 2000 6:07:01 PMlong: October 19, 2000 6:07:01 PM MDTfull: Thursday, October 19, 2000 6:07:01 PM MDT例: <fmt:formatDate value=“” pattern=“yyyy/MM/dd” />格式化输出数字:<fmt:formatNumber> value var pattern例:<fmt:formatNumber value=“” pattern=“###.##” />format实例Html代码1.<%@ page language="java"contentType="text/html; charset=GBK"%>2.<%@ taglib prefix="fmt"uri="/WEB-INF/fmt.tld" %>3.<html>4.<head>5.<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>6.<title>testjstl1</title>7.</head>8.<body>9.<jsp:useBean id="curDate"class="java.util.Date"scope="page"/>10.<fmt:formatDate value="${curDate}"pattern="yyyy-MM-dd HH:mm:ss"/><br>11.12.<fmt:formatNumber value="10.32898432"pattern="#.##"/><br>13.<% request.setAttribute("var1",3.1415926); %>14.<fmt:formatNumber value="${var1}"pattern="#.##"/><br>15.</body>16.</html>。

《JavaWeb应用开发技术实用教程》王红JSTL详解

《JavaWeb应用开发技术实用教程》王红JSTL详解
Java Web开发技术
第 7章
JSTL
1
2018/10/13
Java Web开发技术
第七章 JSTL

7.1 JSTL简介 7.2 核心标记库 7.3 I18N格式标记库 7.4 SQL标记库 7.5 函数标记库 7.6 小结
2
2018/10/13
Java Web开发技术
7.1 JSTL简介
7.2.1 通用标记(续)
<c:remove> <c:remove>主要用来移除变量。 语法 :<c:remove var="varName" [scope="{ page|request|session|application}"] /> <c:remove>属性描述如表7-8所示。 例exa_remove.jsp演示<c:remove>的使用,运 行结果见图7-5所示。
JSTL是一个标准的已制定好的标记库,可以 应用于各种领域。其主要优点见课本图7-1所 示。 JSTL所提供的标记库主要分为五大类: 1. 核心标记库(Core tag library)、2.I18N国际 化和本地化标记库(I18N-capable formatting tag library) 、3.SQL标记库(SQL tag library) 、 4.XML标记库(XML tag library) 、 5.函数标 记库(Functions tag library)。

20
2018/10/13
Java Web开发技术
7.2.2 条件标记(续)
<c:when>和我们一般在程序中用的when一样, 代表了一个条件分支,当test的结果为true, 则执行本体内容,否则不执行体内 <c:when>语法: <c:when test="Condition" > 本体内容 </c:when>

JSTL文档

JSTL文档

一、核心标签库 (2)1/1通用标签 (2)1/1/1<c:out>标签 (2)1/1/2<c:set>标签 (3)1/1/3<c:remove>标签 (4)1/1/4<c:catch>标签 (4)1/2条件标签 (5)1/2/1 <c:if> (5)1/2/2<c:choose> <c:when> <c:otherwise> (6)1/3循环迭代标签 (6)1/3/1<c:forEach> (6)1/3/2<c:forTokens>标签 (7)1/4URL相关标签 (8)1/4/1 <c:import> (8)1/4/2 <c:url>标签 (9)1/4/3 <c:param>标签 (10)1/4/4 <c:redirect>标签 (10)二、格式标签库 (11)2/1国际化(I18N)标签 (11)2/1/1 <fmt:setLocale>标签 (11)2/1/2 <fmt:requestEncoding>标签 (11)2/1/3 <fmt:bundle>标签 (12)2/1/4 <fmt:setBundle>标签 (12)2/1/5 <fmt:message>标签 (12)2/2日期处理标签 (12)2/2/1 <fmt:timeZone>标签 (13)2/2/2<fmt:setTimeZone>标签 (13)2/2/3<fmt:formatDate>标签 (13)2/2/4<fmt:parseDate>标签 (14)2/3数字处理标签 (14)2/3/1<fmt:formatNumber>标签 (14)2/3/2<fmt:parseNumber>标签 (15)三、函数标签库 (15)四、SQL标签库 (16)4/0/1<sql:setDataSource> (16)<sql:setDataSource driver="com.mysql.jdbc.Driver" user="root" password="root"url="jdbc:mysql://localhost:3306/ebusi?antoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/> (16)4/0/2 <sql:query> (16)4/0/3<sql:update>标签 (17)4/0/4<sql:param>和<sql:dateParam >标签 (17)4/0/5<sql:transaction>标签 (17)五、XML标签库 (18)一、核心标签库<%@taglib uri="/jsp/jstl/core" prefix="c" %><%String kjk="ui,er,san,si";request.setAttribute("kjk",kjk);%><%String array[]={"00","11","22","33"};request.setAttribute("array",array);%><c:set value="lixiaofeng" var="user" scope="request"></c:set><c:set var="users" scope="request">gggdfd</c:set><c:out value="${er}" escapeXml="true"></c:out> <c:remove var="user" scope="request"/><c:out value="${er}" escapeXml="true"></c:out><c:choose><c:when test=""></c:when><c:otherwise></c:otherwise></c:choose><c:forEach items="${requestScope.array}" var="it"><c:out value="ghg"></c:out></c:forEach><c:forTokens delims="," items="${requestScope.kjk}" var="nn"> <c:out value="${nn}"></c:out></c:forTokens>1/1通用标签1/1/1<c:out>标签<c:out value="<h3>练习1</h3>" escapeXml="false"></c:out><c:out value="<h3>练习2</h3>" escapeXml="true"></c:out><c:out value="<h3>练习3</h3>"></c:out>1/1/2<c:set>标签注:如果target属性存在,则property属性必须存在4种用法:1 <c:set value="lixiaofeng" var="user" scope="request"/>2 <c:set var="user" scope="request">lixiaofeng</c:set>3 <c:set value="lixiaofeng" target="target" property =" propertyName "/>4 <c:set target="target" property =" propertyName ">lixiaofeng</c:set>例子:<%HashMap hm=new HashMap();hm.put("actor1","葛优");hm.put("actress1","林心如");hm.put("actress2","赵薇");request.setAttribute("hm",hm);request.setAttribute("money",new Integer("100"));%><c:set var="money" value="200" scope="page"></c:set><c:out value="${hm.actor1}"/><c:out value="${hm.actress1}"/><c:out value="${hm.actress2}"/><!--为对象添加属性actor2--><c:set target="${hm}" property="actor2">梁朝伟</c:set><!--修改对象的属性actor1的值--><c:set value="郑伊健" target="${hm}" property="actor1"></c:set><c:out value="${hm.actor2}"/><c:out value="${hm.actor1}"/><c:out value="shjsjh"></c:out>1/1/3<c:remove>标签<c:set value="lixiaofeng" var="user" scope="request"></c:set><c:out value="${er}" escapeXml="true"></c:out><c:remove var="user" scope="request"/><c:out value="${er}" escapeXml="true"></c:out>注:<c:set>标签也可以用于删除变量和对象,如:<c:set var=”varName” value=”${expresstion}” scope=”page|request|session|application”/>当value的值表达式微null是,则变量或对象将从指定范围内删除,若不指定范围,将删除所有找到的1/1/4<c:catch>标签<c:catch var="ex1"><%String s1="abc";out.print(s1.length());%></c:catch>无异常:${ex1}<br/><c:catch var="ex2"><% String s2=null;out.print(s2.length());%></c:catch>异常1:${ex2}<br/><c:catch var="ex3"><%int a=0;out.print(8/a);%></c:catch>异常2:${ex3}1/2条件标签//条件标签<c:if> <c:choose> <c:when> <c:otherwise>1/2/1 <c:if><c:if test="${1!=0}"><c:out value="mmm"></c:out></c:if><jsp:useBean id="now" class="java.util.Date" scope="request"></jsp:useBean> ${now.hours}${now.minutes}${now.seconds}<c:if test="${now.hours>=0&&now.hours<12}">上午好</c:if><c:if test="${now.hours>=12&&now.hours<18}">下午好</c:if><c:if test="${now.hours>=18&&now.hours<=23}">晚上好</c:if>1/2/2<c:choose> <c:when> <c:otherwise><c:set var="score" value="${param.score}"></c:set><c:choose><c:when test="${score>0&&score<=60}">成绩很不理想,继续努力</c:when><c:when test="${score>60&&score<=75}">成绩一般,继续努力</c:when><c:when test="${score>75&&score<=90}">成绩不错,继续努力</c:when><c:when test="${score>90&&score<=100}">成绩很好,继续保持</c:when><c:otherwise>成绩输入有误</c:otherwise></c:choose>1/3循环迭代标签//循环迭代标签1/3/1<c:forEach>注:items或者begin和end属性必须指定其一varstatus包括4个状态:index,count,first,last<%HashMap hm=new HashMap();hm.put("age","30");hm.put("height","150");hm.put("sex","female");hm.put("get","5k");request.setAttribute("hm",hm);%><c:forEach var="mm" items="${hm}" varStatus="ss">${mm.key} ${mm.value} ${ss.index} ${ss.first} ${st} ${ss.count}<br/></c:forEach><!--遍历StringTokenizer--><h3>"氮气,氧气,二氧化碳,氢气,硫化氢,一氧化碳,二氧化硫"</h3><c:forEach var="vv" items="氮气,氧气,二氧化碳,氢气,硫化氢,一氧化碳,二氧化硫" begin="2" end="6" varStatus="sy"><c:if test="${sy.first}">begin:${sy.begin}end:${sy.end}${vv}</c:if><c:if test="${st}">总数为:${sy.count}</c:if></c:forEach>1/3/2<c:forTokens>标签注:只能遍历以逗号作为分隔符的StringTokenizer对象,可以同时指定一个或者多个分隔符<%String kjk="ui,er,san,si";request.setAttribute("kjk",kjk);%><c:forTokens delims="," items="${requestScope.kjk}" var="nn"><c:out value="${nn}"></c:out></c:forTokens><c:set value="西瓜,苹果-梨-香蕉,西红柿,芒果-水蜜桃-栗子,菠萝,橙子-樱桃,葡萄-柿子" var="fruits"></c:set><!--以“-”为分隔符--><c:forTokens var="fruit" delims="-" items="${fruits}" varStatus="ss">${ss.count}: ${fruit}<br/></c:forTokens><!--以“,”为分隔符--><c:forTokens var="fruit" delims="," items="${fruits}" varStatus="ss">${ss.count}: ${fruit}<br/></c:forTokens><!--以“,”为分隔符begin为2,end为5--><c:forTokens var="fruit" delims="," items="${fruits}" varStatus="ss" begin="2" end="5"><br/> ${ss.count}: ${fruit}</c:forTokens><!--以“-,”为分隔符--><c:forTokens var="fruit" delims="-," items="${fruits}" varStatus="ss"><br/>${ss.count}: ${fruit}</c:forTokens><!--以“-,”为分隔符begin为2,end为5--><c:forTokens var="fruit" delims="-," items="${fruits}" varStatus="ss" begin="2" end="5"><br/> ${ss.count}: ${fruit}</c:forTokens><!--以“-,”为分隔符--><c:forTokens var="fruit" delims="-," items="${fruits}" varStatus="ss" step="3"><br/> ${ss.count}: ${fruit}</c:forTokens>1/4URL相关标签实现资源导入,格式化URL,参数传递和重定向等,有4个:<c:import> <c:url> <c:param> <c:redirect>1/4/1 <c:import>导入其他服务器资源<c:import url="/" charEncoding="gbk"></c:import>导入本地资源<c:import url="importtest.jsp" context="/webpage" var="vv">${vv}</c:import>需要在tomcat的server.xml的<host>内添加<Content path=”/webpage”docBase=”webpage”debug=”0”reloadable=”true”crossContext=”true”/>1/4/2 <c:url>标签<c:url>的用法:1、<c:url value=”value” [context=”context”]/>2、<c:url value=”value” [context=”context”]><c:param>…..</c:url >3、<c:url value=”value”[context=”context”] var =“varName”[scope=”page|request|session|application”]/>4、<c:url value=”value”[context=”context”] var =“varName”[scope=”page|request|session|application”]><c:param>…..</c:url>输出绝对URL:<c:url value=""></c:url><br/>输出相对URL:<c:url value="/WEB-INF/web.xml" context="/webpage"></c:url><br/>输出带参数的URL:<c:url value="/iftest.jsp"><c:param name="a" value="1"></c:param><c:param name="b" value="2"></c:param></c:url><br/>保存格式化:绝对URL:<c:url var="ftp" value="ftp://61.185.32.191"></c:url><a href="${ftp}">电子图书</a><br/>保存相对地址:<c:url var="testhtml" value="/paratest.html" context="/webpage"></c:url><a href="${testhtml}">web应用</a><br/>保存带参数的URL:<c:url var="testhtml1" value="/paratest.html" context="/webpage"><c:param name="user" value="lixiaofeng"></c:param><c:param name="age" value="21"></c:param></c:url><a href="${testhtml1}">fengfei</a>1/4/3 <c:param>标签注:不能独立使用,只能用于<c:import> <c:url>和<c:redirect>标签体内添加参数1/4/4 <c:redirect>标签并允许使用不同的WEB应用的相对URL<c:redirect url="/servletone" context="/Webpage"><c:param name="color">Red</c:param><c:param name="sex">Female</c:param><c:param name="hob">singsong</c:param></c:redirect>二、格式标签库<%@taglib uri="/jsp/jstl/fmt" prefix="fmt" %>2/1国际化(I18N)标签国际化(又I18N)包括:<fmt:setLocale> <fmt:requestEncoding> <fmt:bundle> <fmt:setBundle> <fmt:message> <fmt:param>2/1/1 <fmt:setLocale>标签2/1/2 <fmt:requestEncoding>标签2/1/3 <fmt:bundle>标签2/1/4 <fmt:setBundle>标签2/1/5 <fmt:message>标签2/2日期处理标签<fmt:formatDate> <fmt:parseDate> <fmt:timeZone> <fmt:setTimeZone>2/2/1 <fmt:timeZone>标签2/2/2<fmt:setTimeZone>标签2/2/3<fmt:formatDate>标签2/2/4<fmt:parseDate>标签2/3数字处理标签<fmt:formatNumber> <fmt:parseNumber>2/3/1<fmt:formatNumber>标签2/3/2<fmt:parseNumber>标签三、函数标签库<%@taglib uri="/jsp/jstl/functions" prefix="fn" %>使用:${fn:函数名(参数列表)}例子:函数表达式:\${fn:contains("dddd","dhkjhj")}结果:${fn:contains("dddd","dhkjhj")}四、SQL标签库<%@taglib uri="/jsp/jstl/sql" prefix="sql" %>4/0/1<sql:setDataSource><sql:setDataSource driver="com.mysql.jdbc.Driver" user="root" password="root" url="jdbc:mysql://localhost:3306/ebusi?antoReconnect=true&amp;useUnicode=true&amp;charact erEncoding=UTF-8"/>4/0/2 <sql:query><sql:setDataSource driver="com.mysql.jdbc.Driver" var="ds" user="root" password="root" url="jdbc:mysql://localhost:3306/ebusi?antoReconnect=true&amp;useUnicode=true&amp;charact erEncoding=UTF-8"/><sql:query var="result" dataSource="${ds}" sql="select * from table_admin" ><c:forEach var="row" items="${result.rows}">${row.admin_login_name}</c:forEach></sql:query>4/0/3<sql:update>标签<sql:update dataSource="${ds}">insert into table_user_base values(1022,'dddd','123456',0.0,0,0)</sql:update>4/0/4<sql:param>和<sql:dateParam >标签若<sql:query>和<sql:update>标签中使用了带参数的SQL语句(参数用?表示),则需要<sql:update dataSource="${ds}">update table_user_base set user_base_name=? where id=1001<sql:param value="kjl"></sql:param></sql:update>4/0/5<sql:transaction>标签五、XML标签库<%@taglib uri="/jsp/jstl/xml" prefix="x" %>JSTL的XML标签库提供了解析XML文档。

JSTL详解(常用标签以及c:forEach遍历集合)

JSTL详解(常用标签以及c:forEach遍历集合)

JSTL详解(常⽤标签以及c:forEach遍历集合)JSTL标签参考⽂章:/qq_25827845/article/details/53311722# 学习总结⼀、 JSTL的简介1. 什么是JSTLJSTL 是 JSP 标准标签库,利⽤标签库的标签可以取代 JSP 页⾯上的 Java 代码,为页⾯设计⼈员和后台开发⼈员的分⼯协作提供了便利。

2. JSTL常⽤标签库标签库名URI字符串作⽤前缀核⼼标签库<%@ taglib prefix=“c” uri=“/jsp/jstl/core” %>⽤于页⾯逻辑控制如:if、forEachc格式化标签库<%@ taglib prefix=“fmt” uri=“/jsp/jstl/fmt” %>⽤于执⾏格式操作如:格式化⽇期字符串fmt3. JSTL使⽤步骤1)、导⼊ jstl-1.2.jar 包,每个标签底层其实都是⽤ Java 代码实现的,复制 jar 包到 web/WEB-INF/lib ⽬录结构下;2)、创建 JSP 页⾯,使⽤ taglib 的指令引⽤标签库<%@ taglib prefix="c" uri="/jsp/jstl/core" %>3)、接下来就可以使⽤标签库定义好的标签了,例如:<c:if>⼆、核⼼标签库常⽤标签1. c: set 标签标签名使⽤<c:out value=“xxx”/>输出 xxx<c:out value="${age}"/>输出EL表达式 ${age} 获取的内容<c:out value=”${age}” default=”xxx”/>输出EL表达式 ${age} 获取的内容,当EL表达式内容不存在时输出 default 的内容2. c: out 标签标签名使⽤<c:set var=“a” value=“xxx”/>在pageContext中添加name为a,value为xxx的数据<c:set var=”a” value=”xxx” scope=”session”/>在session中添加name为a,value为xxx的数据3. c: if 标签属性名是否⽀持EL属性类型属性描述test⽀持,必须是EL boolean EL 中条件为真则执⾏标签体内容注意:没有对应 else 标签代码案例:<c:set var="a" value="hello"/><c:if test="${not empty a }"><c:out value="${a }"/></c:if>4. c: choose 标签作⽤:⽤于多分⽀判断(多条件判断)标签名作⽤chaoose类似于 Java 中的 switch,choose只是⼀个容器,包含下⾯两个元素when可以出现多个⽤于每个判断条件,类似于 switch 中 case。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14
2010-7-15
Java Web开发技术 开发技术
7.2.1 通用标记(续)
<c:catch> <c:catch>捕捉嵌套在它内部的标记抛出的异常, 并且将异常信息储存起来. 语法: <c:catch [var="varName"] > 欲抛出异常部分 </c:catch>
15
2010-7-15
4
2010-7-15
Java Web开发技术 开发技术
7.1 JSTL简介(续)
课本给出了一个测试范例程序HelloJSTL.jsp,显示头 信息和欢迎的字符串,运行结果见图7-2所示. 本例中注意:在JSP网页中必须有下面这行声明: <%@ taglib prefix="c" uri="/jstl/core_rt" %> 或<%@ taglib prefix="c" uri="/jsp/jstl/core" %>
7.2.3迭代标记(续)
<c:forEach> <c:forEach>为循环控制,类似于Java中的for循环. 它可以将集合(Collection)中的成员遍历.当条件符合 时,就会持续重复执行<c:forEach>的体内容. 语法1:集合对象的迭代 <c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]> 本体内容 < /c:forEach>
22
2010-7-15
Java Web开发技术 开发技术
7.2.3迭代标记
在JSP开发中,迭代是最常用的操作.如 果使用JSP脚本,则常使用Iterator或 Enumeration完成.迭代标记包含: <c:forEach>和<c:forTokens>.
23
2010-7-15
Java Web开发技术 开发技术
Java Web开发技术 开发技术
7.2.1 通用标记(续)
<c: catch>属性描述见表7-9所示. 例exa_catch.jsp演示<c:catch>的使用,运行 结果见图7-6所示
16
2010-7-15
Java Web开发技术 开发技术
7.2.2 条件标记
条件标记分类中包含四个标记:<c:if>, <c:choose>,<c:when>和<c:otherwise> 下面分别介绍语法和描述属性
5
2010-7-15
Java Web开发技术 开发技术
7.2 核心标记库
7.2.1 通用标记 7.2.2 条件标记 7.2.3迭代标记 7.2.4 URL相关标记
6
2010-7-15
Java Web开发技术 开发技术
7.2 核心标记库(续)
核心标记库主要用于:基本输入输出,流程控 制,迭代操作和URL 操作.详细的分类见课 本表7- 2所示 在JSP中使用JSTL中的核心标记库时,必须 使用<%@ taglib %>指令,并且设定prefix和 uri的值,通常设定如下: <%@ taglib prefix="c" uri="/jsp/jstl/core" %>
Java Web开发技术 开发技术
第7章 章
JSTL
1
2010-7-15
Java Web开发技术 开发技术
第七章 JSTL
7.1 JSTL简介 7.2 核心标记库 7.3 I18N格式标记库 7.4 SQL标记库 7.5 函数标记库 7.6 小结
2
2010-7-15
Java Web开发技术 开发技术
7
2010-7-15
Java Web开发技术 开发技术
7.2.1 通用标记
通用标记包含四个:<c:out>,<c:set>, <c:remove>和<c:catch>. 下面我们分别来介绍它们的语法和属性描述.
8
2010-7-15
Java Web开发技术 开发技术
7.2.1 通用标记(续)
<c:out> <c:out>主要用来显示数据的内容,与 <%=...... %>功能 主要用来显示数据的内容, 主要用来显示数据的内容 功能 一样. 一样. 语法1: 语法 :没有体内容 <c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] /> 语法2: 语法 :有体内容 <c:out value="value" [escapeXml="{true|false}"]> default value </c:out>
17
2010-7-15
Java Web开发技术 开发技术
7.2.2 条件标记(续)
<c:if> 语法1:没有本体内容 <c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/> 语法2:有本体内容 <c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]> 体内容 </c:if>
24
2010-7-15
Java Web开发技术 开发技术
7.2.3迭代标记(续)
<c:forEach> 语法2:迭代指定的次数 <c:forEach [var="varName"] [varStatus="varStatusName"] begin="begin" end="end" [step="step"]> 本体内容 </c:forEach>
7.2.1 通用标记(续)
<c:remove> <c:remove>主要用来移除变量. 语法 :<c:remove var="varName" [scope="{ page|request|session|application}"] /> <c:remove>属性描述如表7-8所示. 例exa_remove.jsp演示<c:remove>的使用,运 行结果见图7-5所示.
10
2010-7-15
Java Web开发技术 开发技术
7.2.1 通用标记(续)
<c:set> <c:set>主要用来将变量存储至某个范围(page,request,session, application)中或是 JavaBean的属性中. 语法1:将value值存储至scope指定范围内的varName变量中 <c:set value="value" var="varName" [scope="{ page|request|session|application }"]/> 语法2:将体内容存储至scope指定范围内的varName变量中 <c:set var="varName" [scope="{ page|request|session|application }"]> 体内容 </c:set>
11
2010-7-15
Java Web开发技术 开发技术
7.2.1 通用标记(续)
<c:set> 语法3:将value值存储至target指定对象的属性中 <c:set value="value" target="target" property="propertyName" /> 语法4:将体内容存储至target指定对象的属性中 <c:set target="target" property="propertyName"> 体内容 </c:set>
12
2010-7-15
Java Web开发技术 开发技术
7.2.1 通用标记(续)
<c: set >属性描述见课本表7-6所示,举例见 表7-7所示. 例exa_set.jsp演示了<c:set>的使用,相关语 法基本罗列其中,运行结果见图7-4所示.
13
2010-7-15
Java Web开发技术 开发技术
26
2010-7-15
Java Web开发技术 开发技术
7.2.3迭代标记(续)
</c:forTokens>属性描述见表7-14所示 例exa_forTokens.jsp演示如何用不同的分隔 符分割字符串,运行结果见图7-14所示
27
2010-7-15
Java Web开发技术 开发技术
7.2.4 URL相关标记
相关文档
最新文档