`
影梦龙
  • 浏览: 122560 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论
阅读更多


JSTL 是一个不断完善的开放源码的JSP标签库,由apache的jakarta小组来维护的。它只能运行在支持JSP1.2和Servlet2.3规范的容器 上。

它包含两部分:标签库表达式语言(Expression Language,EL) 。标签库目前支持如下4种标签:
Core---- 支持JSP中的一些基本的操作。前缀是c,可以参照http://java.sun.com/jstl/core
XML processing----支持xml文档的处理。前缀是x,可以参照http://java.sun.com/jstl/xml
I18N capable formatting----支持对JSP页面的国际化。前缀是fmt,可以参照http://java.sun.com/jstl/fmt
Database access(SQL)----支持JSP对数据库的操作。前缀是sql,可以参照http://java.sun.com/jstl/sql

表达式语言
表达式语言(EL语言)是JSTL输出(输入)一个java表达式的表示形式。在JSTL中,EL语言只能在属性中使用,只能通过建
立表达式${exp1}来进行调用。一共有三种方式
1、value属性包含一个表达式

<some:tag value="${expr}" />
说明:此种情况表达式将被计算出来并且根据类型转换规则赋值给value属性。

例如:

<c:out value="${username}" />
这里的${username}就是一个EL,它就相当于JSP语句:
<%=request.getAttribute("username")%>
或者
<%=session.getAttribute("username")%>

2、value属性包含一个或多个属性,这些属性被文本分割或围绕。

<some:tag value="some${expr}${expr}text${expr}" />
说明:这种情况,表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),同时将结果赋值给value属
性。

3、value属性仅仅包含文本。

<some:tag value="some text" />
说明:这种情况,字符串型属性value将根据类型转换规则转换为标签所希望的类型。
EL 语言的运算符
有两种,第一种是使用“.”来获得有名字的属性。第二种是使用“[]”来获得有名字或者按数字排列的属性。
例子:

${user.username}或者${user["username"]},两种意义相同。
empty 运算符
用来检查对象、集合或字符串变量是否为空或者null。
例子:

${empty param.username}
说明:如果request的参数列表中的username的值为null,则表达式的值为true。EL语言也可以直接使用表较运算符与 null
进行比较,
如,${param.firstname == null}。
比较运算符

==或eq-----相等检查
!=或ne-----不等检查
<或lt-----小于检查
>或 gt-----大于检查
<=或le-----小于等于检查
>=或ge-----大于等于检查
数字运算符与逻辑运算符均与java语言相同。
Core 标签库
它提供用于条件逻辑、循环检查、输出、变量创建、文本导入以及URL处理的标签。
1、通用标签
c:out标签---用于显示数据
它共有三个属性:

value----输出信息,可以使EL表达式或常量,是个必须有的属性。
default----value为空时显示的信息
escapeXml---- 为true时避开特殊的xml字符集

实例如下:

<c:out value="${user.username}" default="guest" />
说明:显示用户的用户名,如果为空则显示guest。
<c:out value="${sessionScope.username}" />
说明:指定从session中获取username的值显示。
<c:out value="${username}" />
说明:显示username的值,默认是从request(page)中取,如果request中没有就从session中取,如果 session中没有那么就

application(ServletContext)中取,如果都没有就不显示。
c:set标签---用于保存数据
它共有五个属性:

value----输出信息,可以使EL表达式或常量
target----需要修改属性的变量名,一般是JavaBean的实 例
property----需要修改的JavaBean属性,如果target指定了,这个必须指定
var----需要保存信息的变量
scope---- 保存信息变量的范围

实例如下:

<c:set value="${test.testinfo}" var="test2" scope="session" />
说明:将test.testinfo的值保存到session的test2中。
<c:set target="${cust.address}" property="city" value="${newcity}" />
说明:将对象cust.address的city属性保存到newcity中。
c:remove标签---用于删除数据
它共有两个属性:

var----需要保存信息的变量,这个是必须指定的
scope----保存信息变量的范围

实例如下:

<c:remove var="test2" scope="session" />
说明:从session中删除test2变量。
2、流程控制标签
c:if标签---用于条件控制
它共有三个属性:

test----需要评价的条件,相当于if中的条件,是个必须指定的
var----需要保存结果的变量名
scope---- 保存条件结果的变量范围

c:choose标签
没有属性
c:when标签---也是用于条件控制的
它就一个属性:

test----需要评价的条件,是个必须指定的

c:otherwise标签
也没有属性
实例如下:

<c:if test="${user.wealthy}">
user.wealthy is true.
</c:if>
说明:如果user.wealthy的值为true,则显示“user.wealthy is true.”。
<c:choose>
    <c:when test="${user.generous}">
      user.generous is true.
    </c:when>
    <c:when test="${user.stringy}">
      user.stringy is true.
    </c:when>
    <c:otherwise>
      user.generous and user.stringy are false.
    </c:otherwise>
</c:choose>
说明:如果user.generous的值为true,则显示“user.generous is true.”;
如果 user.stringy的值为true,则显示“user.stringy is true.”;
其他所有情况(即user.generous 的值跟user.stringy的值都不为true)全部显示“user.generous and user.stringy are
false.”。

注意:JSTL中没有形如if...else...的条件语句,所以只能用,和标签来共同完成。

3、循环控制标签
c:forEach标签---用于通用数据
它共有六个属性:

items----进行循环的项目
begin----开始条件,默认值是0
end----结束条件,默认值是集合中的 最后一个项目
step----步长,默认值是1
var----代表当前项目的变量名
varStatus----显示循环状态的变 量

实例如下:

<c:forEach items="${vectors}" var="vector">
<c:out value="${vector}"/>
</c:forEach>

上面的等价于:

for(int i=0;i<vectors.size();i++){
    out.println(vectors.get(i));
}
说明:上面的vectors是个java.util.Vector对象,里面存放的是String数据,vector是当前循环条件下的 String对象。
vectors可以替换
成任意的实现了java.util.Collection接口的对象。
<c:forEach begin="1" end="10" step="1" var="i">
count=<c:out value="${i}"/><br>
</c:forEach>
输出结果:
count=0
count=1
.....
count=10

c:forTokens标签
它的属性就比forEach多了一个,而且items也是必须的属性:

delims---分割符,是个必须的属性

实例如下:

<c:forTokens items="a:b:c:d" delims=":" var="token">
<c:out value="${token}"/>
</forTokens>
说明:这个标签的作用相当于java.util.StringTokenizer类。上例是将字串以":"分割循环4次,token是循环到当 前分割到
的字符串。
4、导入文件和URL
JSTL核心标签库支持使用来包含文件,使用来打印和格式化URL,使用来重定向URL。
c:import标签---将另一个页面的代码包含到当前页面中。
它共有七个属性:

url----需要导入页面的url,是个必须的属性
context----/后跟本地Web应用程序的名字,默认是当前应用 程序
charEncoding----用于导入数据的字符集,默认是ISO-8859-1
var----接受导入文本的变量名,默认是 page
scope----接受导入文本的变量的范围
varReader----接受导入文本的java.io.Reader变量名
varStatus---- 显示循环状态的变量

c:url标签---输出一个url地址
它共有五个属性:

url----url地址,是个必须的属性
context----/后跟本地Web应用程序的名字,默认是当前应用程序
charEncoding---- 用于导入数据的字符集,默认是ISO-8859-1
var----接受处理过的url变量名,该变量存储url,默认是输出到页
scope---- 存储url的变量名的范围,默认是page

实例如下:

<c:import url="http://www.abc.com/abc.js " var="newsfeed" />
说明:将url为http://www.abc.com/abc.js 的 文件包含到当前页的当前位置,并将url保存在newsfeed中。
<c:url url="/index.jsp" />
说明:在当前页的当前位置输出http://www.abc.com/index.jsp,http://www.abc.com 是 当前页所在的位置。

c:redirect标签---将请求重定向到另一个页面
它共有两个属性:

url----url地址,是个必须的属性
context----/后跟本地Web应用程序的名字,默认是当前应用程序

实例如下:

<c:redirect url="http://www.abc.com/login.jsp " />
说明:将请求重定向到http://www.abc.com/login.jsp 页, 相当于response.setRedirect

c:param标签---给一个重定向或包含页面传递参数。
它共有两个属性:

name----在request参数中设置的变量名,是个必须属性
value----在request参数中设置的变量值

实例如下:

<c:redirect url="login.jsp">
<c:param name="id" value="abc">
</c:redirect>
说明:将参数abc以id为名字传递到login.jsp页面,相当于login.jsp?id=abc的作用。
综上所述可总结出JSTL具有以下优点:
1、在应用服务器之间提供了一致的接口,最大程度地提高了Web应用在各应用服务器之间地可移植性。
2、简化了JSP和Web应用程序的开发。
3、以一种统一的方式减少了JSP中scriptlet的代码数量,可以达到没有任何scriptlet代码的程序。

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

分享到:
评论

相关推荐

    jstl中文教程pdf

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    JSTL 入门:表达式语言

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    JSTL 表达式语言

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    JSTL中if标签使用方法

    &lt;c:if&gt; 的用途就和我们一般在程序中用的if一样。  语法  语法1:没有本体内容(body)  [scope="{page|request|session|application}"]/&gt; ... 属性  名 称  说 明  EL  类 型  必 须  默认值

    JSTL标签实例

    jstl各种标签实例,每个标签一个页面,每个标签的属性都有对应实例

    jstl中文教程.pdf

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    JSTL标签使用手册-中文版.zip

    jstl使用手册-同韩顺平struts视频教学使用的资料 有常用几个标签,如set,out,forEach的详细属性介绍

    JSTL详解--Core 标签库介绍

    最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。 JavaServer Pages(JSP)是用于 J2EE 平台的标准表示层技术。JSP 技术提供了用于执行计算...

    用于dreamweaver的标签提示和格式化.JSTL的c,fmt,x和struts2

    用于dreamweaver的标签提示和格式化.JSTL的c,fmt,x和struts2.1.8.1 已经包含格式化, 请按压缩包的注释操作. 修改了之前没有struts2的标签属性提示错误

    JSTL 入门 表达式语言.mht

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    JSTL 表达式 入门 访问SQL和XML内容

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    jsp开发的jstl标签库

    java前端开发技术jsp 页面展现中所用jstl标签的属性及使用方法

    第8章 JSTL.ppt

    forEach标签可以将集合中的成员遍历一遍,通过items属性指定一个集合,var属性指明集合中的一个成员,可以通过var属性指定的变量来访问集合中的成员。 实例 爱好:${paramValues.Habit}" var="habit"&gt; ${habit} ...

    servlet + jstl + el 分页小程序 带源码

    这是一个jsp分页程序,使用JSTL + servlet + EL 完成的 pageSql.sql 是数据库语句 整个执行为:通过传入pageNo(页码),pageSize(每页显示条数)查库,得到一个list数据,并且封装到一个Page对象中,page对象同时还需...

    JSP中常用的JSTL fmt(format格式化)标签用法整理

    主要介绍了JSP中常用的JSTL fmt(format格式化)标签用法整理,fmt的格式化处理遵循i18n国际化格式标准,需要的朋友可以参考下

    JavaWeb开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的)

    主要介绍了JavaWeb开发之JSTL标签库的使用、 自定义EL函数、自定义标签(带属性的、带标签体的),需要的朋友可以参考下

    EL表达式和JSTL标签(备java基础,jsp,servlet,tomcat)

    EL 提供....当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。JSTL主要提供了5大类标签库:核心标签库、 国际化(I18N)标签库、SQL标签库、XML标签库、函数标签库。

    表达式语言

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能的...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值

    EL 表达式语言 jsp表达式

    在JSTL中,EL语言只能在属性值中使用。EL语言只能通过建立表达式${exp1}来进行调用。在属性值中使用表达式有三种方式。 1、 value属性包含一个表达式 ${expr}"/&gt; 在这种情况下,表达式值被计算出来并根据类型转换...

    在JSTL EL中处理java.util.Map,及嵌套List的情况

    当forEach 的items属性中的表达式的值是java.util.Map时,则var中命名的变量的类型就是 java.util.Map.Entry。这时var=entry的话,用表达式${entry.key}取得键名。 用表达${entry.value}得到每个entry的值。这是...

Global site tag (gtag.js) - Google Analytics