`
kuru
  • 浏览: 140689 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JSTL

    博客分类:
  • java
阅读更多
JavaServer Pages Standard Tag Library (1.1 ),它的中文名称为 JSP 标准标签函数库。JSTL是一个标准的已制定好的标签库,可以应用于各种领域,如:基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等。从表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)

表 7-1
JSTL 前置名称 URI 范例
核心标签库 c http://java.sun.com/jsp/jstl/core <c:out>
I18N格式标签库 fmt http://java.sun.com/jsp/jstl/xml <fmt:formatDate>
SQL标签库 sql http://java.sun.com/jsp/jstl/sql <sql:query>
XML标签库 xml http://java.sun.com/jsp/jstl/fmt <x:forBach>
函数标签库 fn http://java.sun.com/jsp/jstl/functions <fn:split>

表 7-2
分类 功能分类 标签名称
Core 表达式操作 outsetremove catch
流程控制 if choose when otherwise
迭代操作 forEach forTokens
URL操作 Import param url param redirect param

在 JSP 中要使用 JSTL 中的核心标签库时,必须使用<%@ taglib %>指令,并且设定 prefix 和uri的值,通常设定如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

表达式操作
表达式操作分类中包含四个标签:<c:out>、<c:set>、<c:remove>和<c:catch>。
●  <c:out>
语法
语法1:没有本体(body)内容
<c:out value="value" [escapeXml="{true|false}"] [default="defaultValue"] />
语法2:有本体内容
<c:out value="value" [escapeXml="{true|false}"]>
default value
</c:out>
属性
名称 说明 EL  类型 必须 默认值
value  需要显示出来的值 YObject  Object  是 无
default  如果value的值为null,则显示 default 的值 YObject  Object  否 无
escapeXml  是否转换特殊字符,如:<转换成&lt; Yboolean boolean  否 true
注意
表格中的EL字段,表示此属性的值是否可以为 EL表达式,例如:Y表示 attribute = "${表达式}"为符合语法的,N则反之。

●  <c:set>
<c:set>主要用来将变量储存至JSP范围中或是 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>
语法3:将 value的值储存至 target 对象的属性中
< c:set value="value" target="target" property="propertyName" />
语法4:
将本体内容的数据储存至 target 对象的属性中
<c:set target="target" property="propertyName">
… 本体内容
</c:set>
属性
名称          说明 EL 类型 必须 默认值
value 要被储存的值 Y Object 否 无
var 欲存入的变量名称 N String 否 无
scope var变量的JSP范围 N String 否 page
target 为一JavaBean或java.util.Map 对象 Y Object  否 无
property  指定target对象的属性 Y  String    否 无
Null 和 错误处理
语法3和语法4会产生异常错误,有以下两种情况:
☆ target为null
☆ target不是java.util.Map 或 JavaBean 对象
假若value为null时:将由储存变量改为移除变量
☆ 语法1:由var和scope所定义的变量,将被移除
若scope已指定时,则 PageContext.removeAttribute(varName, scope)
若scope未指定时,则PageContext.removeAttribute(varName)
☆ 语法3:
假若target为Map时,则 Map.remove(property)
假若target为JavaBean时,property 指定的属性为 null

●  <c:remove>
<c:remove>主要用来移除变量。
语法
<c:remove var="varName" [scope="{ page|request|session|application }"] />
属性
名称 说明 EL  类型 必须 默认值
var  欲移除的变量名称 N String  是 无
scope  var变量的JSP范围 N String  否 page
说明
<c:remove>必须要有var属性,即要被移除的属性名称,scope 则可有可无,例如:
<c:remove var="number" scope="session" />

●  <c:catch>
<c:catch>主要用来处理产生错误的异常状况,并且将错误信息储存起来。
语法
<c:catch [var="varName"] >
… 欲抓取错误的部分
</c:catch>
属性
名称 说明 EL  类型 必须 默认值
var  用来储存错误信息的变量 N  String  否 无

说明
<c:catch>主要将可能发生错误的部分放在<c:catch>和</c:catch>之间。如果真的发生错误,可以将错误信息储存至varName 变量中,例如:
<c:catch var="message">
//可能发生错误的部分
</c:catch>
另外,当错误发生在<c:catch>和</c:catch>之间时,则只有<c:catch>和</c:catch>之间的程序会被中止忽略,但整个网页不会被中止。

7-2-2 流程控制
流程控制分类中包含四个标签:<c:if>、<c:choose>、<c:when>和<c:otherwise>.
●  <c:if>
<c:if>的用途就和我们一般在程序中用的 if 一样。
语法
语法1:没有本体内容(body)
<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>
属性
名称 说明 EL  类型 必须 默认值
test  如果表达式的结果为true,则执行本体内容,false则相反 Y boolean  是 无
var  用来储存test运算后的结果,即 true 或 false N String  否 无
scope  var变量的JSP范围 N String  否 page

●  <c:choose>
<c:choose>本身只当做 <c:when> 和 <c:otherwise> 的父标签。
语法
<c:choose>
    本体内容( <when> 和 <otherwise> )
</c:choose>
限制
<c:choose>的本体内容只能有:
·空白
·1或多个 <c:when>
·0或多个 <c:otherwise>

●  <c:when>
<c:when> 的用途就和我们一般在程序中用的 when 一样。
语法
<c:when test="testCondition" >
本体内容
</c:when>

属性
名称 说明 EL  类型 必须 默认值
test    如果表达式的结果为true,则执行本体内容,false则相反 Y boolean 是 无
限制
☆ <c:when>必须在<c:choose>和</c:choose>之间
☆ 在同一个<c:choose>中时,<c:when>必须在<c:otherwise>之前
说明
<c:when>必须有 test 属性,当 test 中的表达式结果为 true 时,则会执行本体内容;如果为false时,则不会执行。
● <c:otherwise>
在同一个 <c:choose> 中,当所有 <c:when> 的条件都没有成立时,则执行 <c:otherwise> 的本体内容。
语法
<c:otherwise>
本体内容
</c:otherwise>

迭代操作
迭代(Iterate)操作主要包含两个标签:<c:forEach>和<c:forTokens>.
●  <c:forEach>
<c:forEach> 为循环控制,它可以将集合(Collection)中的成员循序浏览一遍。运作方式为当条件符合时,就会持续重复执行<c:forEach>的本体内容。
语法
语法1:迭代一集合对象之所有成员
<c:forEach [var="varName"] items="collection" [varStatus="varStatusName"] [begin="begin"]  [end="end"] [step="step"]>
本体内容
< /c:forEach>
语法2:迭代指定的次数
<c:forEach  [var="varName"]  [varStatus="varStatusName"]  begin="begin"  end="end" [step="step"]>
本体内容
</c:forEach>
属性
名称 说明 EL  类型 必须 默认值
var  用来存放现在指到的成员 N String  否 无
items  被迭代的集合对象 Y Arrays Collection Iterator Enumeration Map String 否 无
varStatus  用来存放现在指到的相关成员信息 N String  否 无
begin  开始的位置 Y int  否 0
end  结束的位置 Y int  否 最后一个成员
step  每次迭代的间隔数 Y int  否 1
说明
如果要循序浏览一个集合对象,并将它的内容显示出来,就必须有 items 属性。
<c:forEach>并不只是用来浏览集合对象而已, items并不是一定要有的属性,但是当没有使用 items 属性时,就一定要使用 begin 和 end 这两个属性。
<c:forEach>还提供varStatus 属性,主要用来存放现在指到之成员的相关信息。例如:
我们写成varStatus="s",那么将会把信息存放在名称为 s 的属性当中。varStatus属性还有另外四个属性:index、count、first和last,它们各自代表的意义如表 7-5:
表 7-5
属性 类型 意义
index  number  现在指到成员的索引
count  number  总共指到成员的总数
first  boolean  现在指到的成员是否为第一个成员
last  boolean  现在指到的成员是否为最后一个成员

●  <c:forTokens>
<c:forTokens> 用来浏览一字符串中所有的成员,其成员是由定义符号(delimiters)所分隔的。
语法
<c:forTokens items="stringOfTokens" delims="delimiters" [var="varName"]
[varStatus="varStatusName"] [begin="begin"] [end="end"] [step="step"]>
本体内容
</c:forTokens>

属性 
名称 说明 EL  类型 必须 默认值
var  用来存放现在指到的成员 N String  否 无
items  被迭代的字符串 Y String  是 无
delims  定义用来分割字符串的字符 N String  是 无
varStatus  用来存放现在指到的相关成员信息 N String  否 无
begin  开始的位置 Y int  否 0
end  结束的位置 Y int 否 最后一个成员
step 每次迭代的间隔数 Y Int 否 1
范例
下面为一个典型的<c:forTokens>的范例:
<c:forTokens items="A,B,C,D,E" delims="," var="item" >
${item}
</c:forTokens>



URL 操作
JSTL 包含三个与 URL 操作有关的标签,它们分别为:<c:import>、<c:redirect>和<c:url>。它们主要的功能是:用来将其他文件的内容包含起来、网页的导向,还有 url 的产生。
●  <c:import>
<c:import> 可以把其他静态或动态文件包含至本身 JSP 网页。它和 JSP Action 的<jsp:include>最大的差别在于:<jsp:include>只能包含和自己同一个 web application下的文件;
而<c:import>除了能包含和自己同一个 web application 的文件外,亦可以包含不同 web application或者是其他网站的文件。
语法
语法1:
<c:import url="url" [context="context"] [var="varName"]
[scope="{page|request|session|application}"] [charEncoding="charEncoding"]>
本体内容
</c:import>
语法2:
<c:import url="url" [context="context"]
varReader="varReaderName" [charEncoding="charEncoding"]>
本体内容
</c:import>
属性
名称 说明 EL 类型 必须 默认值
url 一文件被包含的地址 Y String 是 无
context  相同Container下,其他 web站台必须以“/” 开头 Y String 否 无
var  储存被包含的文件的内容(以String类型存入) N String 否 无
scope  var变量的JSP范围 N String 否 Page
charEncoding  被包含文件之内容的编码格式 Y String 否 无
varReader  储存被包含的文件的内容(以Reader类型存入) N    String 否 无
说明
<c:import>中必须要有 url 属性,它是用来设定被包含网页的地址。它可以为绝对地址或是相对地址.
<c:import>也支持FTP协议,假设现在有一个 FTP站台,地址为 ftp.javaworld.com.tw,它里面有一个文件data.txt,那么可以写成如下方式将其内容显示出来:
<c:import url="ftp://ftp.cse.yzu.edu.tw/data.txt" />
另外,可以在<c:import>的本体内容中使用<c:param>,它的功用主要是:可以将参数传递给被包含的文件,它有两个属性name和value.如:
<c:import url="http://java.sun.com" >
<c:param name="test" value="1234" />
</c:import>
这样的做法等于是包含一个文件,并且所指定的网址会变成如下:
http://java.sun.com?test=1234


●  <c:url>
<c:url>主要用来产生一个URL。
语法
语法1:没有本体内容
<c:url value="value" [context="context"] [var="varName"]
[scope="{page|request|session|application}"] />
语法2:本体内容代表查询字符串(Query String)参数
<c:url value="value" [context="context"] [var="varName"]
                             [scope="{page|request|session|application}"] >
<c:param> 标签
</c:url>
属性
名称 说明 EL 类型 必须 默认值
value 执行的URL Y String 是 无
context 相同Container下,其他web站台必须以“/”开头 Y String 否 无
var 储存被包含文件的内容(以String 类型存入) N String 否 无
scope var变量的JSP范围 N String 否 Page
<c:url value="http://www.javafan.net " >
<c:param name="param" value="value"/>
</c:url>
上面执行结果将会产生一个网址为http://www.javafan.net?param=value,我们更可以搭配 HTML 的<a>使用,如下:
<a href="
    <c:url value="http://www.javafan.net " >
    <c:param name="param" value="value"/>
</c:url>">Java爱好者</a>
如果<c:url>有 var属性时,则网址会被存到 varName中,而不会直接输出网址。

●  <c:redirect>
<c:redirect>可以将客户端的请求从一个 JSP 网页导向到其他文件。
语法
语法1:没有本体内容
<c:redirect url="url" [context="context"] />
语法2:本体内容代表查询字符串(Query String)参数
<c:redirect url="url" [context="context"] >
<c:param>
</c:redirect >
属性
名称 说明 EL 类型 必须 默认值
url 导向的目标地址 Y String 是 无
context 相同Container下,其他web站台必须以“/”开头 Y String 否 无
url就是设定要被导向到的目标地址,它可以是相对或绝对地址。
<c:redirect> 的功能不止可以导向网页,同样它还可以传递参数给目标文件。如:
<c:redirect url="http://java.sun.com">
<c:param name="param" value="value"/>
</c:redirect>
分享到:
评论

相关推荐

    jstl-1.2.1 jar

    jstl-1.2.1,之前的版本需要在服务器中配置一下,而且它分成了两个jar(jstl.jar和standard.jar)还有一个tld文件,而1.2已经不用配置了,直接把javax.servlet.jsp.jstl-1.2.1.jar和javax.servlet.jsp.jstl-api-1.2.1...

    jstl标签jar包(jstl-api-1.2和jstl-impl-1.2)

    `jstl-api-1.2.jar` 和 `jstl-impl-1.2.jar` 是JSTL的两个关键组件: 1. **jstl-api-1.2.jar**:这是JSTL的API接口定义,包含了所有JSTL标签库的接口和抽象类。开发人员在编写JSP页面时需要导入这个包,以便使用...

    JAVA WEB jstl资源jar包 包括jstl.jar和standard.jar

    当然可以帮助您撰写关于`jstl.jar`和`standard.jar`这两个JAR包的介绍。以下是一段示例文本: --- ### JAR包资源介绍 #### 1. jstl.jar `jstl.jar`(JavaServer Pages Standard Tag Library,简称 JSTL)是一个...

    jstl-api-1.2.jar、jstl-impl-1.2.jar

    **JSTL(JavaServer Pages Standard Tag Library)** 是一个标准的标签库,用于简化JavaServer Pages(JSP)开发。它提供了许多预定义的标签,使得开发者可以更方便地处理常见任务,如控制流、迭代、XML处理等,而...

    JSTL相关Jar包(jstl+standard)

    JSTL,全称为JavaServer Pages Standard Tag Library,是Java服务器页面标准标签库,它提供了一系列的标签来简化JSP开发,使开发者能够更高效地编写动态网页。JSTL的主要目标是减少在JSP页面中使用脚本元素,提升...

    JSTL中文帮助文档

    **JSTL(JavaServer Pages Standard Tag Library)中文帮助文档** JSTL 是一套用于 JavaServer Pages (JSP) 的标准标签库,旨在简化 JSP 开发,提高代码的可读性和可维护性。它提供了多种核心标签和扩展标签,包括...

    jstljar包包含jstl.jar和standard.jar文件

    **JSTL(JavaServer Pages Standard Tag Library)**是一个用于JSP的标准标签库,它提供了一系列的标签,用于简化JSP页面中的业务逻辑处理。JSTL的主要目标是提高JSP开发的可维护性和可读性,通过使用预定义的标签,...

    jstl-impl-1.2.jar和jstl-api-1.2.jar

    "jstl-impl-1.2.jar"和"jstl-api-1.2.jar"是JSTL 1.2版本的两个关键组件,它们在Java Web应用中起着至关重要的作用。 1. **jstl-api-1.2.jar**: 这个jar文件包含了JSTL的API接口定义。它定义了所有JSTL标签库的接口...

    jstl-jar包

    **JSTL(JavaServer Pages Standard Tag Library)**是一个用于JavaServer Pages(JSP)的标签库,旨在简化Web应用程序的开发。它提供了一系列预定义的标签,使得开发者可以通过简单的XML标记来处理常见任务,而无需...

    JSTL.rar_JSTL_JSTL下载

    **JSTL(JavaServer Pages Standard Tag Library)详解** JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中的一个标准标签库,它为JSP开发者提供了丰富的、可重用的组件,用于处理常见任务,如...

    JSTL必须引用的jstl.jar和 standard.jar两个包!!

    JSTL,全称为JavaServer Pages Standard Tag Library,是Java EE平台中用于简化JSP页面开发的一组标准标签库。它提供了一系列预定义的标签,用于处理常见的任务,如迭代、条件判断、国际化、XML处理等,使得JSP代码...

    jstl标准开发jar包

    **JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面的一个标准标签库,它提供了一组用于处理常见Web开发任务的标签,如迭代、条件判断、XML处理等,极大地简化了Java Servlet和JSP中的代码。...

    jstl的两个jar包

    JSTL,全称JavaServer Pages Standard Tag Library,是JavaServer Pages(JSP)标准标签库,它提供了一系列标签来简化JSP页面的编写,使页面逻辑更清晰,代码更简洁。在Java Web开发中,JSTL经常与EL(Expression ...

    jstl1.1.jar和standard1.1.jar

    今天做项目,用到了el表达式和jstl,在tomcat6.0上跑得好好的,没想到copy到tomcat5.5后,服务器起不来了,是tomcat版本的问题。查阅了不少资料,现在总结如下: 错误信息: java.lang.NoClassDefFoundError: javax...

    jstl-1.2.jar免费下载

    jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2...

    jstl-1.2.rar_JSTL_jstl 1.2_jstl jar_jstl-1.1.2.jar _jstl.jar

    **JSTL(JavaServer Pages Standard Tag Library)详解** JSTL,全称为JavaServer Pages Standard Tag Library,是Java Web开发中的一个标准标签库,它为开发者提供了在JSP页面中处理常见任务的标签,例如迭代、...

    购物车(JSTL实现)

    **购物车(JSTL实现)** 购物车是任何电子商务网站的核心组成部分,它允许用户临时存储想要购买的商品,以便在结账时一次性处理。在这个项目中,我们将关注使用JavaServer Pages (JSP) 和 JavaServer Pages ...

    JSTL最新版本(1.2.1)完整下载

    JavaServer Pages Standard Tag Library,简称JSTL,是用于Java Web开发的标准标签库,它提供了一组用于处理常见任务的标签,比如迭代、条件判断、XML处理等,从而减轻了在JSP页面中使用Java脚本的复杂性。JSTL ...

    JSTL标签库依赖,内含Tomcat8、Tomcat10所需JSTL依赖

    1. 添加JSTL库:将JSTL的JAR文件(如`jstl.jar`和`standard.jar`)放入项目WEB-INF/lib目录下,或者如果使用Maven或Gradle,将依赖添加到构建文件中。 2. 引用JSTL库:在JSP页面的顶部,使用`&lt;%@ taglib %&gt;`指令...

    jstl1.2标签库jar包

    在给定的压缩包文件中,我们有两个重要的JAR文件:`jstl-impl-1.2.jar`和`jstl-api-1.2.jar`。这两个文件是JSTL 1.2版本的核心组成部分。 1. **JSTL API (jstl-api-1.2.jar)** 这个JAR文件包含了JSTL的接口和抽象...

Global site tag (gtag.js) - Google Analytics