JSTL详解内容
- 格式:doc
- 大小:112.50 KB
- 文档页数:28
JSTL语法及参数JSTL包含以下的标签:常用的标签:如<c:out>、<c:remove>、<c:catch>、<c:set>等条件标签:如<c:if><c:when>、<c:choose>、<c:otherwise>等URL标签:如<c:import>、<c:redirect>和<c:url>等XML标签:如<xml:out>等国际化输出标签:如<fmt:timeZone>等SQL标签:如<sql:query>、<sql:update>、<sql:transaction>等一般用途的标签:1.<c:out>没有Body时的语法<c:out value=”value” [escapeXml=”{true|false}”] [default=”defaultValue”]/>有Body时的语法<c:out value=”value” [escapeXml=”{true|false}”]>这里是Body部分</c:out>名字类型描述value Object 将要输出的表达式escapeXml boolean 确定以下字符:<,>,&,’,”在字符串中是否被除数,默认为truedefault Object 如果vaule计算后的结果是null,那么输出这个默认值2.<c:set>这个标签用于在某个范围(page、request、session、application等)中使用某个名字设定特定的值,或者设定某个已经存在的javabean对象的属性。
他类似于<%request.setAttrbute(“name”,”value”);%> 语法1:使用value属性设定一个特定范围中的属性。
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结束迭代。
jstl表达式与el表达式的理解JSTL(JSP Standard Tag Library)和EL (Expression Language)是在JSP中使用的两种不同的表达式语言。
JSTL是一组用来简化JSP页面开发的标签库,而EL是一种用于在JSP页面中进行表达式求值的语言。
这两种表达式语言在JSP页面中使用的方式和功能都有所不同。
JSTL表达式是一种通过标签进行数据处理和逻辑控制的方式。
它使用XML风格的标签来执行特定的操作,可以在JSP页面中实现循环、条件判断、字符串处理、日期处理等功能。
JSTL标签库包含多个不同的标签,如core、fmt、xml、sql等。
每个标签库都有一组标签,用于执行相关的操作。
例如,core标签库包含常用的循环和条件判断标签,fmt标签库包含日期和国际化相关的标签。
JSTL表达式可以通过标签来对数据进行处理。
例如,使用c:forEach标签可以对一个集合进行循环遍历,使用c:if标签可以进行条件判断。
在JSTL表达式中还可以使用EL表达式来获取和操作数据。
JSTL的标签和EL表达式可以相互结合使用,以实现更复杂的数据处理和逻辑控制。
EL表达式是一种简洁且易于使用的表达式语言,用于在JSP页面中进行数据访问和操作。
它使用类似于JavaScript的语法,可以方便地访问JavaBean中的属性和方法,以及JSP页面中的参数和属性。
EL表达式支持基本的数据类型、容器类型(如数组、列表、映射等)、运算符和函数调用。
EL表达式的语法包括使用${}来表示EL表达式的起始和结束,可以在${}中使用变量、属性、方法和运算符来进行数据访问和操作。
EL表达式可以在JSP页面中直接使用,也可以作为JSTL标签的属性值使用。
例如,可以使用${}来获取一个JavaBean对象user 的name属性值,可以使用${}来获取一个请求参数的值。
JSTL表达式与EL表达式的主要区别在于它们的语法和功能。
SpringMVC学习之JSTL条件⾏为和遍历⾏为详解JSTL条件⾏为和遍历⾏为JSTL的条件⾏为标签有四个:if,choose,when,otherwise标签1、if标签是对某⼀个条件进⾏测试,结果为true就执⾏它的body content。
测试结果保存在Boolean对象中,并创建有届变量来保存这个Boolean对象。
利⽤var和scope属性分别定义有界变量的名称和范围。
两种形式:1) 没有body content<c:if test="condition" var="varName" [scope="page|request|session|application"] />此情况的var ⼀般是通过其他标签在同⼀个JSP的后续阶段再进⾏测试2)<c:if test="conditin" [var="varName"] [scope="page|request|session|application"] >body content</c:if>if标签的属性属性类型描述test+布尔决定处理任何现有bodycontent的测试条件var字符串引⽤测试条件值的有界变量名称;var的类型为Booleanscope字符串var定义的有界变量的范围PS:模拟else的情况可⼀使⽤两次if,⼀次正常,⼀次相反2、choose when 和otherwise标签choose,when和Java中的switch,case类似choose标签中必须嵌有⼀个或者多个when标签,每个when标签都表⽰⼀种可以计算和处理的情况,otherwise标签则⽤于默认的条件块,假如没有任何⼀个when标签的处理结果为true,则otherwise将被处理,otherwise必须放在最后⼀个when之后. choose和otherwise标签没有属性,when标签必须带有定义测试条件的test属性,⽤来决定是否处理bodycontent.3、遍历⾏为forEach3.1 forEach 会⽆数次的反复遍历body content 或者对象的集合可以被遍历的对象包括java.util.Collection,java.util.Map的全部实现,以及对象数组或者主类型,有两种形式:1) 固定的次数重复body content<c:forEach [var="varName"] begin="begin" end="end" step="step" >body content</c:forEach>2) ⽤于遍历对象集合<c:forEach items="collection" [var="varName"] [varStatus="varStatusName"] [begin="begin"] [ end="end"] [step="step"]>body content</c:forEach>forEach标签的属性属性类型描述var字符串引⽤遍历当前项⽬的有界变量名称⽀持的任意items+类型遍历的对象的集合varStatus字符串保存遍历状态的有界变量的名称,类型值是javax.servlet.jsp.jstl.core.LoopTagStatus,带有count属性,返回当前的次数begin+整数如果指定items,遍历将从指定的索引处的项⽬开始,如果没有指定items,遍历将从设定的索引值开始,如果指定begin必须⼤于等于0end+整数如果指定items,遍历将从指定的索引处的项⽬结束,如果没有指定items,遍历将从设定的索引值结束step+整数遍历将只处理间隔指定step的项⽬,从⼀个项⽬开始,在这种情况下,step的值必须⼤于等于1PS:var创建的有界变量的名称只在该forEach中使⽤,⼀到</c:forEach>处就会被删除。
简述jstl的作用JSTL,指的是JavaServer Pages(JSP)标准标签库。
它是一套专为基于JSP的Web应用程序设计的标准标签集合,它提供了对JSP编程中复杂又频繁出现的操作和需要的功能封装。
JSTL是一个标准标签库,由 JavaSoft出,整合了以下5个子库:1.心:定义控制结构,比如循环、条件等;2. XML:用于处理XML文档;3.式化标记:定义了国际化、数字、日期和消息格式化标签;4. SQL:定义SQL标记;5. 事务:提供了基本的数据库操作支持。
JSTL的标签可以替代JSP的脚本块,使我们的JSP文件更加简洁,代码也更易于阅读和维护。
使用JSTL提供的标签,可以使我们的代码更加简洁优雅,增强可维护性,可以和xml、xsl结合来提供复杂的数据显示,可以利用JSTL定义的标签来实现对XML数据的读取、把XML数据转换成HTML页面能识别的格式,可以利用JSTL定义的标签来调用JavaBean属性以及调用JavaBean方法,可以方便地调用数据库服务,以及简单的使用EL表达式等等。
JSTL的优势在于它提供了一组可重用的标签,允许我们以更简洁、更容易理解的方式来完成我们的工作,这也极大地简化了JSP页面的构建和维护。
JSTL不仅极大地提高了JSP的开发效率,而且与其他类库高度整合,比如struts等,实际上,JSTL作为J2EE技术栈中重要的部分,已经广泛地被公司和企业所接受。
总之,JSTL为J2EE技术栈提供了一种更加高效、更加优雅的开发方式,它极大地丰富了JSP的功能,为Web应用的开发提供了更多的思路,并且它把JSP的静态性质变成了动态性质,使得开发者可以更加灵活,也使得开发者更容易维护JSP,并且JSTL支持多种标准,比如XML、SQl等,这也使得Web的开发效率更加高效准确。
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表达式,用于给变量赋值。
${imb.multiple == '2'}:计算有效范围内imb对象的属性multiple的值是否等于2,如果等于2则返回true,否则返回false${users}:返回有效范围内名为”users”的值,该值可以是任何对象,如:request.setAttribute(“users”,new ArrayList()); 这样得到的就是一个集合.三、部分标签使用说明1 、 <c:out>[说明]输出值,相当于 struts 中的 <bean:write>[举例]获得 request 中的属性: <c:outvalue="${requestScope.test_all}"/>获得 session 中的属性:<c:outvalue="${sessionScope.test_all}"/>获得 application 中的属性:<c:outvalue="${applicationScope.test}"/>2 、 <c:forEach>[说明]循环某个范围内的一个集合(可以是Collection、Set、List、Array 等)items----表示要循环的集合var---表示当前集合中的某条记录,可以对它进行访问[举例]3 、 <c:if>[说明]逻辑判断[举例]<c:if test="${imb.hmtb.typeid == 4}"><c:if test="${imb.multiple == '2'}">(10,270)</c:if><c:if test="${imb.multiple == '1'}">(10,290)</c:if> </c:if>4 、<c:set>[说明]设置不同的属性,并且指定它们的范围[举例]<c:set value="10000" var="maxUser" scope="application"/><c:set value="20" var="maxIdelTime" scope="session"/><c:set value="next.jsp" var="nextPage" scope="request"/>相当于:application.setAttribute(“maxUser”,”10000”);session.setAttribute(“maxIdelTime”,”20”);request.setAttribute(“nextPage”,”next.jsp”);一、什么是JSTLJSTL(JavaServerPages Standard Tag Library)JSP标准标签库。
. 内部资料不得拷贝JSTLJSTL标准标签库AURISOFTJSTL和EL简介JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
现在最新版本的JSTL是1.1.2 。
说到了JSTL 就一定要说EL(expression language) jsp的表达式语言,这是一种简单的语言,它是JSP2.0规范的一个新特点。
在之前的JSP中,Java代码以Scriptlet的形式嵌入JSP 页面:<% =str%>。
现在我们可以通过${str}这样的形式来访问后台的数据了。
表达式语言有以下特点:●可获得的名称空间(PageContext属性)。
●嵌套的属性,可以访问集合对象。
●可以执行关系的、逻辑的和算数的运算。
●扩展函数可以和Java类的静态方法映射。
●它可以访问JSP的一系列的隐含对象(request、session、application、page等)。
通过表达式语言,可以非常简单的访问JavaBean中的属性,比如JSP中可以这样访问一个简单的参数:$ {userName} 也可以这样反问一个嵌套的参数:${erName.firstName}表达式语言也可以和JSTL结合使用,如:<c:if test=”${sessionScope.cart.numberOfItems > 0}”>……</c:if>表达式可以包含运行逻辑,如:<c:if test = “${bean1.a < 3 && bean1.a >0”}>……<c:if>表达式包含在${}之间,如果需要在客户端输出${字符,那么可以使用以下的方式:<c:out value=”an expression is ${‘${‘}true}”/>由于在jsp2.0以前没有表达式语言,所以jsp2.0以前的代码中可以包含${之类的代码,如果试图解析这些表达式,肯定造成错误,为了和jsp以前的规范兼容,可以在页面前面声明是否忽略表达式,声明语句如下:<%@ page isELIgnored=”true|false”%>下面我们来看一下EL的操作和他们的优先级别,最上边的优先级高,然后是左边的高:[],()unary -、not、!、empty*、/、div(除)、%、mod (取模)+、binary –< 、>、<=、>=、lt(小于)、gt(大于)、le(小于等于)、ge(大于等于)==、!=、eq(等于)、ne(不等于)&&、and (与)||、or(或)。
JSTL 入门:表达式语言JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现Web 应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML 操作以及数据库访问。
在developerWorks 上其新系列的第一篇文章中,软件工程师Mark Kolb 向您展示了如何使用JSTL 标记来避免在JSP 页面中使用脚本编制元素。
您还将了解如何通过从表示层删除源代码来简化软件维护。
最后,您将了解JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对JSTL 操作指定动态属性值。
JavaServer Pages(JSP)是用于J2EE 平台的标准表示层技术。
JSP 技术提供了用于执行计算(这些计算用来动态地生成页面内容)的脚本编制元素和操作。
脚本编制元素允许在JSP 页面中包括程序源代码,在为响应用户请求而呈现页面时可以执行这些源代码。
操作将计算操作封装到很象HTML 或XML 标记的标记中,JSP 页面的模板文本通常包含这些标记。
JSP 规范只将几种操作定义成了标准,但从JSP 1.1 开始,开发人员已经能够以定制标记库的方式创建其自己的操作了。
JSP 标准标记库(JSTL)是JSP 1.2 定制标记库集,这些标记库实现大量服务器端Java 应用程序常用的基本功能。
通过为典型表示层任务(如数据格式化和迭代或条件内容)提供标准实现,JSTL 使JSP 作者可以专注于特定于应用程序的开发需求,而不是为这些通用操作“另起炉灶”。
当然,您可以使用JSP 脚本编制元素(scriptlet、表达式和声明)来实现此类任务。
例如,可以使用三个scriptlet 实现条件内容,清单 1 中着重显示了这三个scriptlet。
但是,因为脚本编制元素依赖于在页面中嵌入程序源代码(通常是Java 代码),所以对于使用这些脚本编制元素的JSP 页面,其软件维护任务的复杂度大大增加了。
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赋值。
jsp页面中jstl标签详解JSLT标签库,是日常开发经常使用的,也是众多标签中性能最好的。
把常用的内容,放在这里备份一份,随用随查。
尽量做到不用查,就可以随手就可以写出来。
这算是Java程序员的基本功吧,一定要扎实。
JSTL全名为JavaServer Pages Standard Tag Library,目前最新的版本为1.1版。
JSTL 是由JCP(Java Community Process)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签函数库。
Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性、维护性和方便性。
JSTL 1.1必须在支持Servlet 2.4且JSP 2.0以上版本的Container才可使用<%@ taglib %>引入标签库=================================================================== ======1、以classPath中,加入jar包:standard-1.1.2.jar ,jstl-1.1.2.jar2、在相目\WEB-INF\tld\文件夹中放入常用的tld文件:c.tld,fmt.tld3、在jsp文件的顶部加入以下内容:Java代码1. <%@ taglib uri="/jsp/jstl/core" prefix="c" %>2. <%@ taglib uri="/jsp/jstl/fmt" prefix="fmt"%>3. <%@ taglib uri="/jsp/jstl/functions" prefix="fn" %><c:> 核心标签库=================================================================== =======JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:1.表达式控制标签:out、set、remove、catch2.流程控制标签:if、choose、when、otherwise3.循环标签:forEach、forTokens4.URL操作标签:import、url、redirect<c:forEach> 标签-------------------------------------------------------------------为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。
JSTL 标签库详解/jsp/jstl/corecatch<c:catch>动作用于捕获JSP元素在其体中抛出的异常。
示范代码:<c:catch var="err">${ername == 3}</c:catch>${err}更多 catch 信息choose用于控制嵌套<c:when>和<c:otherwise>动作的处理。
示范代码:<c:choose><c:when test="${product.onSale}"> ...</c:when> <c:otherwise> ....</c:otherwise></c:choose>更多 choose 信息forEach<c:forEach>动作将其体反复计算固定次数,或者针对一个集合中的每个元素分别计算一次体。
示范代码:<c:forEach items="${map}" var="mymap" ><c:out value="${mymap.key}" /><c:out value="${mymap.value}" /></c:forEach>更多 forEach 信息if<c:if>动作仅当所指定的表达式计算为true时才计算其体。
示范代码:<c:if test="${empty param.empDate}">.....</c:if>更多 if 信息otherwise它等价于“else”语句。
示范代码:<c:choose><c:when test="${paramValues.sampleValue[2] == 11}">not 12 not 13,it is 11</c:when><c:otherwise>not 11 、12、13</c:otherwise></c:choose>更多 otherwise 信息out<c:out>标签是一个最常用的标签,用于在 JSP 中显示数据。
JSTL核心库使用详解摘要:JSTL根据是否支持EL(表达式语言)表达式分为两套、每套包括四个部分:核心库、国际化操作、数据库相关操作和XML相关操作。
通过使用标签库,可是大大减少JSP 页面上的Java代码,建立结构清晰的JSP页面,从而利于JSP页面的维护。
本文主要介绍其中最常用的核心库的使用方法,其他部分的使用可以依此类推。
关键词:Java 标准标签库( Java Standard Tag Libraries, JSTL)1 JSTL概述JSTL是著名开源项目Jakarta Taglibs Project(/taglibs/index.html)的研究成果,JSTL为JSP页面开发者提供了最通用的标签。
功能主要包括通用编程逻辑封装、数据库相关操作、XML相关操作、国际化相关操作以及其他内容,并随着越来越多的人的开发和使用,将进一步提供更多的功能。
目前,JSTL主要包含在两个包中:stl.jar和standard.jar,其中在standard.jar包的/META-INF子目录下包含了相应的所有TLD文件,根据功能分为c*.tld、fmt*.tld、x*.tld、sql*.tld、permittedTaglibs.tld和scriptfree.tld,JSTL1.1版本中由于增加了常用函数库标签,所有还包括一个fn.tld。
这些TLD文件是根据标签功能来划分的,各自对应的功能很明显。
需要补充说明的是permittedTaglibs.tld和scriptfree.tld:permittedTaglibs.tld对应的是标签验证功能的,即定义了JSP页面可以使用哪些标签;而scriptfree.tld对应的是JSP页面验证功能的,它实现了更严格的JSP页面内容验证,可以验证页面是否可以包含形如“<%! declarations %>”的java声明、形如“<% scriptlets %>”的Java代码段以及形如<% =expressions %>的Java表达式。
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(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将根据类型转换规则转换为标签所希望的类型。
标准标签库(JSTL)JSP标准标签库(JSP Standard Tag Library,简称JSTL)是一个为实现Web应用程序的常用功能而定制的标记库集,这些功能包括基本输入输出、流程控制、循环、XML文件剖析、数据库查询、国际化和文字格式化的应用等JSTL快速开发安装配置JSTL必须修改web.xml添加8个标签库JSTL快速开发实例核心标签库(Core Tag Library)主要有:表达式相关的标签、流程控制标签、迭代标签和URL 标签核心标签库分类在使用JSTL核心标签库时,必须使用的<%@taglib%>指令如下:<%@ tablib prefix="c" uri="/jsp/jstl/core"%>这条指令声明了将要使用JSTL核心标签库表达式相关标签表达式相关的标签有4个:<c:out> <c:set> <c:remove> <c:catch>。
这4 个标签的属性名称及说明、标签用途以及标签的语法如表例子流程控制标签流程控制标签(Flow Control Tags)同样也有4个:<c:if> <c:choose> <c:when> <:otherwise> 流程控制标签core_flowControl.jsp。
core_flowControl.htm提交表单,core_flowControl.jsp接收表单数据并显示欢迎消息在上面的例子中,首先从网页中传递一个参数username到JSP页面中,然后在JSP页面中分别使用<c:if>、<c:choose>、<c:when>、<c:otherwise>判断输入名字,然后再给出相应的输出。
迭代标签迭代标签(Iterator Tags)有两个:<c:forEach>和<c:forTokens>。
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 (JavaServer Pages Standard Tag Library) 是一个JSP标签集合,用于简化JSP页面的开发。
<c:catch>标签是JSTL中用于异常处理的一个非常有用的标签,它可以捕获代码块执行时发生的异常,并允许页面优雅地处理异常,而不是显示给用户一个错误页面。
<c:catch>标签的基本用法:▪var属性用于指定一个变量名,该变量用于存储捕获到的异常对象。
▪在<c:catch>标签内部的代码块中发生的任何异常都会被捕获,而不会导致页面显示错误。
▪如果异常被捕获,可以使用var属性指定的变量来获取异常对象,进而在页面上显示错误消息或进行其他处理。
示例:假设我们有一个可能会抛出异常的操作,比如除以0的操作,我们可以使用<c:catch>来捕获这个异常,并处理它:在这个例子中,如果<c:catch>标签内的代码抛出了异常(如除以0),这个异常会被捕获,并将异常对象赋值给ex变量。
然后,我们检查ex变量是否不为空,如果不为空,表示捕获到了异常,接着我们就可以在页面上显示异常消息了。
注意事项:1.作用域:<c:catch>仅能捕获其标签体内的异常。
它不能捕获其它地方发生的异常,例如其它JSP页面或者servlet中的异常。
2.异常处理:虽然<c:catch>可以用于异常处理,但是在实际开发中,应当尽量避免异常的发生,通过良好的编码实践来预防异常是更好的选择。
3.性能考虑:频繁地使用异常处理(特别是在Web应用程序中)可能会对性能产生负面影响。
因此,应当谨慎使用<c:catch>标签,只在确实需要处理异常的地方使用。
<c:catch>标签提供了一种简便的方式来处理JSP页面中的异常,使得开发者可以更好地控制页面的错误处理逻辑,提升用户体验。
先来搭下环境,jstl的包当然是不能少的拉。
其次,下载必须的标签库或者是j ava的标签库文件。
没有的话,也可以联系我xxx_programer@ 将jstl 1.1.jar加到class中,(这就不要我详细的讲了吧),然后将标签库放到WEB-INF下或则将java的标签库文件(*.jar)放到WEB-INF\lib下,就可以写测试代码了。
first_jstl.jsp<%@ taglib prefix="c" uri="/jsp/jstl/core" %> <%@ page contentType="text/html; charset=gb2312" language="java" %><c:set var="userName" value="hellking"/><c:set value="16" var="age"/>欢迎您,<c:out value="${userName}"/><hr><c:forEach var="i" begin="1" end="5"><font size=${i}>${i}</font><br></c:forEach><c:if test="${age<18}">对不起,你的年龄过小,不能访问这个网页◎!</c:if><br></body></html>web.xml(使用java的标签库文件*.jar)<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee web-app_2_4.x sd"version="2.4"><display-name>jstl test</display-name><description>jstl test</description></web-app>(使用标签库文件*.tld)<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="/xml/ns/j2ee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/j2ee http://java.s /xml/ns/j2ee/web-app_2_4.xsd"version="2.4"><taglib><taglib-uri>/jstl/fmt</taglib-uri><taglib-location>/WEB-INF/fmt.tld</taglib-location></taglib><taglib><taglib-uri>/jstl/fmt-rt</taglib-uri><taglib-location>/WEB-INF/fmt-rt.tld</taglib-location></taglib><taglib><taglib-uri>/jstl/core</taglib-uri><taglib-location>/WEB-INF/c.tld</taglib-location></taglib><taglib><taglib-uri>/jstl/core-rt</taglib-uri><taglib-location>/WEB-INF/c-rt.tld</taglib-location></taglib><taglib><taglib-uri>/jstl/sql</taglib-uri><taglib-location>/WEB-INF/sql.tld</taglib-location></taglib><taglib><taglib-uri>/jstl/sql-rt</taglib-uri><taglib-location>/WEB-INF/sql-rt.tld</taglib-location></taglib><taglib><taglib-uri>/jstl/x</taglib-uri><taglib-location>/WEB-INF/x.tld</taglib-location></taglib><taglib><taglib-uri>/jstl/x-rt</taglib-uri><taglib-location>/WEB-INF/x-rt.tld</taglib-location></taglib></web-app>好了,一个最简单的包含有jstl的页面设计完成了。
下面测试。
http://localhost:8080/jstl/frist_jstl.jsp页面输出结果:欢迎您,hellking12345对不起,你的年龄过小,不能访问这个网页◎!JSTL详解(二)一般用途的标签在JSTL中,一般用途的标签只要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用很频繁,它们有:●<c:out>●<c:set>●<c:remove>●<c:catch>下面,我来讲述一下他们的作用:<c:out>它是一个输出的标签,负责把计算出的结果输出到jspwriter,就跟调用out.println()基本一样。
没有BODY的时候,使用下面的语法:<c:out value=”value” [escapeXml]=”{true|false}” [default=”defaultValue”]/>有BODY的时候,使用下面的语法:<c:out value=”value” [escapeXml]=”{true|false}” >这里是BODY,可以是任何合法的jsp或者是html代码。
</c:out>注意,escapeXml的作用是是否将代码交给xml解析器解释,true为交给xml解析器解释,false 为交给浏览器解释,见红色部分代码举例:c_out.jsp<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page contentType="text/html; charset=gb2312" language="java" %><html><head><title>JSTL: c:out的使用</title></head><body bgcolor="#FFFFFF"><hr><c:set var="sessionAttr" value="sessionValue" scope="session"/><c:set var="pageAttr" value="pageValue" scope="page"/><c:set var="requestAttr" value="requestValue" scope="request"/><c:out value="以下输出的是前面设置的属性<br>" escapeXml="false"/><c:out value="${sessionAttr}"/><c:out value="${pageAttr}"/><c:out value="${requestAttr}"/><c:out value="${test_nodef}" default="没有test_nodef这个变量"/></html><c:set>这个标签用于在某个范围(page,request,session,application)里面设置特定的值(默认为page),或者设置某个已经存在的javabean的属性。
类似于<%request.setAttribute(“name”,value)%>语法:1、使用value属性设置一个特定范围里面的属性:<c:set value=”value” var=”varName” [scope=“{page|request|session|application}”]/ >2、使用value属性设置一个特定范围里面的属性,带有BODY:<c:set value=”value” var=”varName” [scope=“{page|request|session|application}”] >Body content</c:set>3、设置某个特定对象的一个属性:<c:set value=”value” target=”target” property=”propertyName”/ > 4、设置某个特定对象的一个属性, 带有BODY:<c:set value=”value” target=”target” property=”propertyName” > Body content</c:set>举例:c_set.jsp<%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page contentType="text/html; charset=gb2312" language="java" %><jsp:useBean id="user" class="er"/><html><head><title>JSTL:的使用c:set</title></head><body bgcolor="#FFFFFF"><hr>设置一个属性,然后输出它<br><c:set var="maxCount" value="100"/><c:out value="${maxCount}"/><hr>设置属性时,把它的值放在标签的body中。