定义
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开源的JSP标签库,是一个实现Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、XML操作以及数据库访问。
优点
JSTL标签库的使用,是为了弥补HTML表的不足,规范自定义标签的使用而诞生的。在进入了Model2 的时代,人们开始注重软件的分层设计,不希望在Jsp页面中出现Java逻辑代码,同时也由于自定义标签的开发难度较大和不利于技术标准化产生自定义标签库。
分类
JSTL标签库可分为5类:核心标签库、I18N格式化标签库、SQL标签库、XML标签库、函数标签库。这里,我们只讨论核心标签库,其他的就不做讨论了。
核心标签库
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="http://java.sun.com/jsp/jstl/core" %>
EL语言介绍
EL语言是JSTL输出(输入)一个Java表达式的表达形式,在JSTL中,EL语言只能在属性值中使用。EL语言只能通过建立表达式${exp1 }来进行调用。在属性值中使用表达式有三种方式。1. value属性包含一个表达式
在这种情况下,表达式值被计算出来并根据类型转换规则赋值给value属性。比如:表达式${username}就是一个EL,它相当于JSP语句<%=request.getAttribute("username") %>或<%=session.getAttribute("username") %>。
2. value属性包含一个或多个属性,这些属性被文本分割或围绕
在这种情况下,表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),并将结果赋值为value属性。
3. value属性仅仅包含文本
在这种情况下,字符串型属性value将根据类型转换规则转换为标签所希望的类别。
EL语言操作符
取得某个对象或集合中的属性,为了获得集合中的属性,EL支持以下两种操作:
1. 使用.操作符来获得有名字的属性,如:表达式${user.username }表明对象user的username属性
2. 使用[]操作符来获得有名字或按数字排列的属性
表达式控制标签
1. <c:out>标签
【功能】:用于显示数据对象(字符串、表达式)的内容或结果,它有如下属性:
在使用Java脚本输出时常使用的方式为:
<% out.println(“字符串”)%>
<%=表达式%>
在web开发中,为了避免暴露逻辑代码会尽量减少页面中的Java脚本,使用<c:out>标签就可以实现以上功能。
<c:out value=”字符串”>
<c:out value=”EL表达式”>
2. <c:set>标签
【功能】:主要用于将变量存取域JSP范围中或JavaBean属性中,它有如下属性:
如果指定了target属性,那么property属性也必须指定。
3. <c:remove>标签
【功能】:主要用来从指定的JSP范围内移除指定的变量,它有如下属性:
从session中删除city变量:
<c:remove var="city" scope="request"/>
【功能】:用来处理JSP页面中产生的异常,并将异常信息存储
【语法】:
<c:catch var=”name1”>
容易产生异常的代码
</c:catch>
【参数说明】:
var表示由用户定义存取异常信息的变量的名称。省略后也可以实现异常的捕获,但就不能显示的输出异常信息。
流程控制标签
流程控制标签主要用于对页面简单业务逻辑进行控制。
1. <c:if>标签
【功能】:同程序中的if作用相同,用来实现条件控制,它有如下属性:
【使用场景】:在开发中经常会出现不同用户的权限,首先对用户名进行判断(包括进行数据库验证,该功能可以由JavaBean实现,使用EL表达式得到一个布尔型的结果),把判断的结果存放在不同的JSP范围内(比如常用的session内),这样在每个页面都可以得到该用户的权限信息,根据不同权限的用户显示不同的结果。
2. <c:choose>、<c:when>和<c:otherwise>标签
这3个标签通常情况下是一起使用的,<c:choose>标签作为<c:when>和<c:otherwise>标签的父标签来使用。
【语法】:
<c:choose>
<c:when>
…..//业务逻辑1
<c:otherwise>
…..//业务逻辑2
<c:otherwise>
….//业务逻辑3
</c:choose>
【参数说明】:
3个标签的嵌套使用方式,<c:choose>标签只能和<c:when>标签共同使用。
结束语
这次关于JSTL的讨论就先写到这里,循环控制标签和URL操作标签将会在下面一篇文章中继续讨论,请大家耐心期待,同时,文章中有错误之处,还请各位大神批评指正。