标准标签库

1.JSTL简介

它是通用型标签库,已纳入JSP2.0规范,是jsp2.0最重要的特性之一。标签库支持EL获取数据,web开发人员能够利用此标签库取代传统直接在页面中嵌入java程序的做法,以提高程序的可读性和易维护性。

使用标签库实现对象集合的遍历:

<c:forEach items= “${sessionScope.bookList}” var = “book”>
${book.bookName}
</c:forEach>

 

  1. JSTL函数库的分类

 

JSTL共有5个标签库组成,在JSTL规范中为这5个标签库分别指定了不同的URI,并对标签库的前缀做出了约定。

标签库

前缀

URI

示例

核心标签库

C

http://java.sun.com/jsp/jstl/core

<c:out>

I18N标签库

fmt

http://java.sun.com/jsp/jstl/fmt

<fmt:formatDate>

SQL标签

Sql

http://java.sun.com/jsp/jstl/sql

<sql:query>

XML标签库

X

http://java.sun.com/jsp/jstl/xml

<x:forBach>

函数标签库

fn

http://java.sun.com/jsp/jstl/function

<fn:split>

 

 

JSTL的使用需要安装4个jar包后才能使用。

 

 

2.核心标签库

JSTL的核心标签库包含web应用中最常见使用的标签,是JSTL中比较重要的标签库。核心标签库中的标签按功能又可以细分为以下4类。

  1. 通用标签用于操作变量
  2. 条件标签,用于流程控制
  3. 迭代标签,用于循环遍历集合
  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>.

  1. <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.自定义标签库

 

主要有以下几个步骤

 

【步骤一】

开发自定义标签类

  1. 如果标签类有属性,每个属性要有相应的get  set方法
  2. 需要重写doTag()方法

【步骤二】

建立TLD文件

  1. <tlib-version>标签库的版本号
  2. <jsp-version>jsp的版本号
  3. <short-name>默认前缀
  4. <uri>标签库的uri
  5. <tag>当前库的一个标签

【步骤三】

使用标签库

 

 

 

 

 

 

 

 

------------20180914周五下午图书馆