JSTL标签库

在之前我们学过在JSP页面上为了不使用脚本,所以我们有了JSP内置的行为、行为只能提供一小部分的功能,大多数的时候还是会用java脚本,接着就使用了EL表达式,基本上EL表达式看似能满足我们的要求,它能够获取各种对象,各种值,并且还不会抛出NullPointerException之类的错误,但是EL表达式功能还是有限,例如不能遍历集合等,因此为了完善JSP,让其完全不使用java代码,就有了jstl标签库,使用jstl和EL的配合使用,基本上可以实现所有的功能,显示数据,遍历数据等。

 

为什么使用标签?

 

JSP是用来显示数据的,前面我们在JSP中的HTML中嵌入java代码,与<%%>等混在一起,可读性和可维护性都很差,而且使用java脚本不便于代码重用,要实现比较复杂的显示功能,也不方便,而JSP标签和HTML代码很类似,使用JSP标签显得JSP整洁而干净,可读性好,标签能够重复使用,所以就像我们上面说的,我们慢慢意识到不足,就自然在一步步改进,从使用JSP行为,使用EL,在使用标签,都是为了一个目的,让JSP更加完全,方便,只显示数据,而不嵌入逻辑代码。这个涉及到了分层思想,后面说讲解到。

 

JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。

 

JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。

 

根据JSTL标签所提供的功能,可以将其分为5个类别。

 

  1.     核心标签(core标签库)
  2.     格式化标签(fmt标签库)
  3.     JSTL 函数(fn方法库)
  4.     SQL 标签(SQL标签库)
  5.     XML 标签(XML标签库)

 

>core签库标

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

JSTL标签库_第1张图片

标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是标签可以直接通过"."操作符来访问属性。

JSTL标签库_第2张图片

程序示例

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:out 标签实例

    

        <c:out>实例

    

    

        

实例

            

              

        使用的表达式结果为null,则输出该默认值

    

运行结果如下:

实例

<要显示的数据对象(未使用转义字符)>

<要显示的数据对象(使用转义字符)>

使用的表达式结果为null,则输出该默认值

 

标签

标签用于设置变量值和对象属性。

标签就是行为标签的孪生兄弟。

这个标签之所以很有用呢,是因为它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。

 

语法格式

   var=""

   value=""

   target=""

   property=""

   scope=""/>

属性

标签有如下属性:

JSTL标签库_第3张图片

如果指定了target属性,那么property属性也需要被指定。

JSTL标签库_第4张图片

标签

JSP 标准标签库JSP 标准标签库

标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。

这个标签不是特别有用,不过可以用来确保JSP完成清理工作。

语法格式

属性

标签有如下属性:

实例演示

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:remove 标签实例

salary 变量值:

删除 salary 变量后的值:

运行结果如下:

salary 变量值: 4000

删除 salary 变量后的值:

 

标签

JSP 标准标签库JSP 标准标签库

标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。

语法格式

...

属性

标签有如下属性:

实例演示

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:catch 标签实例

   <% int x = 5/0;%>

   

异常为 : ${catchException}

   发生了异常: ${catchException.message}

以上实例运行结果:

异常为 : java.lang.ArithmeticException: / by zero

发生了异常: / by zero

 

标签

JSP 标准标签库JSP 标准标签库

标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。

语法格式

   ...

属性

标签有如下属性:

JSTL标签库_第5张图片

演示实例

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:if 标签实例

   

我的工资为:

 

运行结果如下:

我的工资为: 4000

 

 , , 标签

JSP 标准标签库JSP 标准标签库

标签与Java switch语句的功能一样,用于在众多选项中做出选择。

switch语句中有case,而标签中对应有,switch语句中有default,而标签中有

语法格式

    

        ...

    

    

        ...

    

    ...

    ...

    

        ...

    

 

属性

    标签没有属性。

    标签只有一个属性,在下表中有给出。

    标签没有属性。

 

标签的属性如下:

实例演示

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:choose 标签实例

你的工资为 :

    

       太惨了。

    

    

       不错的薪水,还能生活。

    

    

        什么都没有。

    

 

运行结果如下:

 

你的工资为 : 4000

不错的薪水,还能生活。

 

标签

标签提供了所有行为标签所具有的功能,同时也允许包含绝对URL。

举例来说,使用标签可以包含一个FTP服务器中不同的网页内容。

语法格式

   url=""

   var=""

   scope=""

   varRender=""

   context=""

   charEncoding=""/>

 

属性

标签有如下属性:

JSTL标签库_第6张图片

实例演示

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:import 标签实例

 

以上程序将会打印http://www.baidu.com"页面的源代码,您可以自己动手尝试一下。

 

, 标签

这些标签封装了Java中的for,while,do-while循环。

相比而言,标签是更加通用的标签,因为它迭代一个集合中的对象。

标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。

forEach 语法格式

    items=""

    begin=""

    end=""

    step=""

    var=""

    varStatus="">.

 

forTokens 语法格式

    items=""

    delims=""

    begin=""

    end=""

    step=""

    var=""

    varStatus="">

 

属性

标签有如下属性:

JSTL标签库_第7张图片

标签与标签有相似的属性,不过还有另一个属性:

 实例演示

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:forEach 标签实例

   Item

运行结果如下:

Item 1

Item 2

Item 3

Item 4

Item 5

 

演示实例

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:forTokens 标签实例

   

 

运行结果如下:

google

runoob

taobao

 

标签

标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。

语法格式

属性

c:redirect标签有如下属性:

实例演示

 

如果你需要向 标签传递参数, 请先用 标签来创建URL地址,如下所示:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:redirect 标签实例

 

浏览器打开以上页面将跳转至 http://www.baidu.com。

 

标签

标签将URL格式化为一个字符串,然后存储在一个变量中。

这个标签在需要的时候会自动重写URL。

var属性用于存储格式化后的URL。

标签只是用于调用response.encodeURL()方法的一种可选的方法。它真正的优势在于提供了合适的URL编码,包括中指定的参数。

语法格式

  var=""

  scope=""

  value=""

  context=""/>

 

属性

标签有如下属性:

JSTL标签库_第8张图片

实例演示

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:url 标签实例

    

实例 Demo

    ">

     这个链接通过 标签生成。

    

 

标签

JSP 标准标签库JSP 标准标签库

标签用于在标签中指定参数,而且与URL编码相关。

标签内,name属性表明参数的名称,value属性表明参数的值。

语法格式

属性

标签有如下属性:

程序示例

如果想要向标签中传递参数,需要先使用标签来创建URL:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

c:forTokens 标签实例

    

实例

    

        

        

    

      ">

 使用 为指定URL发送两个参数。

>fmt标签库

 JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

JSTL标签库_第9张图片

下面就常用的fmt标签(数字、日期格式)做一下解释。

 

标签

标签用于格式化数字,百分比,货币。

 

语法格式

  value=""

  type=""

  pattern=""

  currencyCode=""

  currencySymbol=""

  groupingUsed=""

  maxIntegerDigits=""

  minIntegerDigits=""

  maxFractionDigits=""

  minFractionDigits=""

  var=""

  scope=""/>

 

属性

标签有如下属性:

JSTL标签库_第10张图片

如果type属性为percent或number,那么您就可以使用其它几个格式化数字属性。maxIntegerDigits属性和minIntegerDigits属性允许您指定整数的长度。若实际数字超过了maxIntegerDigits所指定的最大值,则数字将会被截断。

 

有一些属性允许您指定小数点后的位数。minFractionalDigits属性和maxFractionalDigits属性允许您指定小数点后的位数。若实际的数字超出了所指定的范围,则这个数字会被截断。

 

数字分组可以用来在每三个数字中插入一个逗号。groupingIsUsed属性用来指定是否使用数字分组。当与minIntegerDigits属性一同使用时,就必须要很小心地来获取预期的结果了。

 

您或许会使用pattern属性。这个属性可以让您在对数字编码时包含指定的字符。接下来的表格中列出了这些字符。

JSTL标签库_第11张图片

实例演示

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

  JSTL fmt:formatNumber 标签

数字格式化:

格式化数字 (1):

            type="currency"/>

格式化数字 (2):

            maxIntegerDigits="3" value="${balance}" />

格式化数字 (3):

            maxFractionDigits="3" value="${balance}" />

格式化数字 (4):

            groupingUsed="false" value="${balance}" />

格式化数字 (5):

            maxIntegerDigits="3" value="${balance}" />

格式化数字 (6):

            minFractionDigits="10" value="${balance}" />

格式化数字 (7):

            maxIntegerDigits="3" value="${balance}" />

格式化数字 (8):

            pattern="###.###E0" value="${balance}" />

美元 :

 

运行结果如下:

 

数字格式化:

 

格式化数字 (1): ¥120,000.23

 

格式化数字 (2): 000.231

 

格式化数字 (3): 120,000.231

 

格式化数字 (4): 120000.231

 

格式化数字 (5): 023%

 

格式化数字 (6): 12,000,023.0900000000%

 

格式化数字 (7): 023%

 

格式化数字 (8): 120E3

 

美元 : $120,000.23

 

标签

 

标签用来解析数字,百分数,货币。

语法格式

 

  value=""

  type=""

  pattern=""

  parseLocale=""

  integerOnly=""

  var=""

  scope=""/>

 

属性

标签有如下属性:

JSTL标签库_第12张图片

pattern属性与标签中的pattern有相同的作用。在解析时,pattern属性告诉解析器期望的格式。

 

实例演示

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

  JSTL fmt:parseNumber 标签

数字解析:

 

数字解析 (1) :

                       type="number" value="${balance}" />

数字解析 (2) :

 

 

运行结果如下:

 

数字解析:

 

数字解析 (1) : 1250003.35

 

数字解析 (2) : 1250003

 

标签

 

标签用于使用不同的方式格式化日期。

语法格式

 

  value=""

  type=""

  dateStyle=""

  timeStyle=""

  pattern=""

  timeZone=""

  var=""

  scope=""/>

 

属性

标签有如下属性:

JSTL标签库_第13张图片

标签格式模式

JSTL标签库_第14张图片

JSTL标签库_第15张图片

实例演示

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

  JSTL fmt:dateNumber 标签

日期格式化:

 

日期格式化 (1):

            value="${now}" />

日期格式化 (2):

            value="${now}" />

日期格式化 (3):

            value="${now}" />

日期格式化 (4):

            dateStyle="short" timeStyle="short"

            value="${now}" />

日期格式化 (5):

            dateStyle="medium" timeStyle="medium"

            value="${now}" />

日期格式化 (6):

            dateStyle="long" timeStyle="long"

            value="${now}" />

日期格式化 (7):

            value="${now}" />

 

 

以上实例运行结果:

 

日期格式化:

 

日期格式化 (1): 11:19:43

 

日期格式化 (2): 2016-6-26

 

日期格式化 (3): 2016-6-26 11:19:43

 

日期格式化 (4): 16-6-26 上午11:19

 

日期格式化 (5): 2016-6-26 11:19:43

 

日期格式化 (6): 2016年6月26日 上午11时19分43秒

 

日期格式化 (7): 2016-06-26

 

标签

 

标签用于解析日期。

语法格式

   value=""

   type=""

   dateStyle=""

   timeStyle=""

   pattern=""

   timeZone=""

   parseLocale=""

   var=""

   scope=""/>

 

属性

标签有如下属性:

JSTL标签库_第16张图片

实例演示

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

 

  JSTL fmt:parseDate 标签

日期解析:

 

                              pattern="dd-MM-yyyy" />

解析后的日期为:

 

以上实例运行结果:

日期解析:

解析后的日期为: Tue Oct 20 00:00:00 CST 2015

 

>fn方法库

JSTL包含一系列标准函数,大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:

<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

JSTL标签库_第17张图片

fn:contains()函数

 

JSP 标准标签库JSP 标准标签库

 

fn:contains()函数用于确定一个字符串是否包含指定的子串。

语法

 

fn:contains()函数的语法如下:

 

...

 

实例演示

 

以下实例演示了这个函数的功能:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

使用 JSTL 函数

 

 

   

找到 langsin

 

   

找到 LANGSIN

 

 

运行结果如下:

 

找到 langsin

 

fn:indexOf()函数

 

JSP 标准标签库JSP 标准标签库

 

fn:indexOf()函数返回一个字符串中指定子串的位置。

语法

 

fn:indexOf()函数的语法如下:

 

${fn:indexOf(<原始字符串>,<子字符串>)}

 

实例演示

 

以下实例演示了这个函数的功能:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

Using JSTL Functions

 

 

Index (1) : ${fn:indexOf(string1, "first")}

Index (2) : ${fn:indexOf(string2, "second")}

 

 

运行结果如下:

 

Index (1) : 8

Index (2) : 13

 

fn:join()函数

 

fn:join()函数将一个数组中的所有元素使用指定的分隔符来连接成一个字符串。

语法

 

fn:join()函数的语法如下:

 

${fn:join([数组], <分隔符>)}

 

实例演示

 

以下实例演示了这个函数的功能:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

使用 JSTL 函数

 

 

字符串为 : ${string3}

 

 

注意:fn:split函数返回一个字符串用指定分隔符分裂为一个子串数组。

 

运行结果如下:

 

字符串为 : www-runoob-com

 

fn:trim()函数

 

fn:trim()函数将字符串两端的空白符移除。

语法

 

fn:trim()函数的语法如下:

 

${fn:trim()}

 

实例演示

 

以下实例演示了这个函数的功能:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

使用 JSTL 函数

string1 长度 : ${fn:length(string1)}

string2 长度 : ${fn:length(string2)}

字符串为 : ${string2}

 

运行结果如下:

string1 长度 : 25

string2 长度 : 16

字符串为 : I am from runoob

​​​​​​​>SQL标签库

JSTL SQL标签库提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。引用SQL标签库的语法如下:

 

<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>

JSTL标签库_第18张图片

举例:

JSTL标签库_第19张图片

JSTL标签库_第20张图片

JSTL标签库_第21张图片

​​​​​​​>XML标签库

不常用。

你可能感兴趣的:(JavaWeb)