标准标签库
1.JSTL简介
它是通用型标签库,已纳入JSP2.0规范,是jsp2.0最重要的特性之一。标签库支持EL获取数据,web开发人员能够利用此标签库取代传统直接在页面中嵌入java程序的做法,以提高程序的可读性和易维护性。
使用标签库实现对象集合的遍历:
<c:forEach items= “${sessionScope.bookList}” var = “book”>
${book.bookName}
</c:forEach>
-
- JSTL函数库的分类
JSTL共有5个标签库组成,在JSTL规范中为这5个标签库分别指定了不同的URI,并对标签库的前缀做出了约定。
标签库 |
前缀 |
URI |
示例 |
核心标签库 |
C |
<c:out> |
|
I18N标签库 |
fmt |
<fmt:formatDate> |
|
SQL标签 |
Sql |
<sql:query> |
|
XML标签库 |
X |
<x:forBach> |
|
函数标签库 |
fn |
<fn:split> |
JSTL的使用需要安装4个jar包后才能使用。
2.核心标签库
JSTL的核心标签库包含web应用中最常见使用的标签,是JSTL中比较重要的标签库。核心标签库中的标签按功能又可以细分为以下4类。
- 通用标签用于操作变量
- 条件标签,用于流程控制
- 迭代标签,用于循环遍历集合
- URL标签,用于针对URL相关的操作
语法:<%taglib prefix=”标签库前缀” uri=”http://java.sun.com/jsp/jstl/core”>
prefix表示标签的前缀。
Uri属性用来指定核心标签库的URI,从而定位标签库描述文件。
2.1)通用标签
JSTL的通哟用标签按照对变量的不同操作又可分为4个标签:<c:out>标签、<c:set>标签、<c:remove>标签、<c:catch>.
- <c:out>标签
该标签用于输出数据,等同于<%= 表达式%>语法格式如下
<c:out value=”value” [escapeXml=”{true|false}”][default=”defaultValue”]>
value表示要输出的数据,可以是jsp表达式,EL表达式或静态值
escapeXml表示是否将>、<、&、’、”等特殊字符进行HTML字符实体
2.<c:set>标签
语法:<c:set var=”varName” value= “value” [scope = “{page|request|session|application}”]/>
用于设置各个范围域的值
3.<c:remove>标签
用于删除各种范围域的属性
语法:<c:remove var = “varName” [scope=”{page|requset|session|application}”]/>
4.<c:catch>标签
用于捕获嵌套在标签体中的内容抛出的异常
语法:
<c:catch [var = “varName”]>
Nested actiond //可能产生异常的代码
</c:catch>
2.2)条件标签
1.<c:if >标签
用于进行条件判断
语法:
<c:if test= “condition” [var=”varName”]
[scope = “{page|requset|session|application}”]>
//condition 为true时执行的代码
</c:if>
2.<c:choose>标签
用于指定多个条件选择,必须与<c:when>和<c:otherwise>标签一起使用。
语法:
<c:choose>
//<c:when>或<c:otherwise>子标签
</c:choose>
3.<c:when>标签
必须以<c:choose>为父标签。必须在<c:otherwise>标签之前
<c:when test = “condition”>
condition为true时的代码
</c:when>
4.<c:otherwise>标签
代表<c:choose>标签之前所有<c:when>标签条件都不符合的情况下的最后选择。
2.3)迭代标签
1.<c:forEach>标签
用于遍历集合或迭代指定的次数,
语法:
<c:forEach [var = “varName”] itme=”collection”
[varStatusName”] [begin = “begin” end=”end” step=”step”>
//标签内容
</c:forEach>
Var 用于指定将当前迭代的元素保存到page域中的属性名称;
Items 指定要迭代的对象
varStatus 表示当前被迭代到的对象的状态信息。
2.<c:forTokens>标签
用于按照指定的分隔符对字符串进行迭代,其语法格式如下。
<c:forTokens items=”stringOfTokens” delims = “delimiters”
[var = “varName”][varStatus = “varStatusName”]
[begin = begin][end=end][step=step]>
//标签内容
</c:forTokems>
Items 指定要迭代的字符串
Delims 用于指定一个或者多个分割符
Var 用于将当前迭代的子字符串保存到page域中的属性名称
VarStatus表示当前被迭代到的对象的状态信息
2.4)URL相关标签
1.<c:url>标签
用于jsp页面中构造一个URL地址,
语法:
<c:url value = “value”
[var = “varName”] [scope = {.....}] [context=”...”][<c:param name=”...” value=”....”]
</c:url>
2.<c:redirect>标签
用于执行response.sendRedirect()方法功能,将当前访问请求重定向到其他资源,其语法如下:
<c:redirect url=”.....” [context=”....”]
[<c:param name=”” value=”...”/>]
</c:redirect>
3.<c:impotr>标签
用于在jsp页面中导入一个URL地址指向的资源内容,可以是一个动态资源,或者静态文件,可以是当前应用或者同意服务器下的其他应用的资源
3.I18N标签库
用于实现国际化和格式化功能的标签库,提供了绑定资源包、从资源包中的本地资源文件读取文件内容的功能,格式化标签提供了对数字、日期时间等本地敏感的数据本地化信息显示的功能。
4.函数标签库
JSTL中定义了标准的EL函数库,基本上实现了对字符串进行操作的函数,
Y语法:
${fn:函数名(参数)} 和java中的使用差不多
5.自定义标签库
主要有以下几个步骤
【步骤一】
开发自定义标签类
- 如果标签类有属性,每个属性要有相应的get set方法
- 需要重写doTag()方法
【步骤二】
建立TLD文件
-
- <tlib-version>标签库的版本号
- <jsp-version>jsp的版本号
- <short-name>默认前缀
- <uri>标签库的uri
- <tag>当前库的一个标签
【步骤三】
使用标签库
------------20180914周五下午图书馆