深入JSTL标签库

(一)了解JSP 标准标签库(JSTL

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

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

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

· 核心标签

· 格式化标签

· SQL 标签

· XML 标签

· JSTL 函数 

JSTL 库安装

Apache Tomcat安装JSTL 库步骤如下:

Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)

· 官方下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

· 本站下载地址:jakarta-taglibs-standard-1.1.2.zip

下载jakarta-taglibs-standard-1.1.2.zip 包并解压,将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件:standard.jarjstl.jar文件拷贝到/WEB-INF/lib/下。

接下来我们在 web.xml 文件中添加以下配置:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" 

    xmlns="http://java.sun.com/xml/ns/j2ee" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<jsp-config>

<taglib>

<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>

<taglib-location>/WEB-INF/fmt.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/jstl/fmt-rt</taglib-uri>

<taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>

<taglib-location>/WEB-INF/c.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>

<taglib-location>/WEB-INF/c-rt.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/jstl/sql</taglib-uri>

<taglib-location>/WEB-INF/sql.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/jstl/sql-rt</taglib-uri>

<taglib-location>/WEB-INF/sql-rt.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/jstl/x</taglib-uri>

<taglib-location>/WEB-INF/x.tld</taglib-location>

</taglib>

<taglib>

<taglib-uri>http://java.sun.com/jstl/x-rt</taglib-uri>

<taglib-location>/WEB-INF/x-rt.tld</taglib-location>

</taglib>

</jsp-config>

</web-app>

使用任何库,你必须在每个JSP文件中的头部包含<taglib>标签。

核心标签

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

<%@ taglib prefix="c" 

           uri="http://java.sun.com/jsp/jstl/core" %>

标签

描述

<c:out>

用于在JSP中显示数据,就像<%= ... >

<c:set>

用于保存数据

<c:remove>

用于删除数据

<c:catch>

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

<c:if>

与我们在一般程序中用的if一样

<c:choose>

本身只当做<c:when><c:otherwise>的父标签

<c:when>

<c:choose>的子标签,用来判断条件是否成立

<c:otherwise>

<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行

<c:import>

检索一个绝对或相对 URL,然后将其内容暴露给页面

<c:forEach>

基础迭代标签,接受多种集合类型

<c:forTokens>

根据指定的分隔符来分隔内容并迭代输出

<c:param>

用来给包含或重定向的页面传递参数

<c:redirect>

重定向至一个新的URL.

<c:url>

使用可选的查询参数来创造一个URL

 

 

格式化标签

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

<%@ taglib prefix="fmt" 

           uri="http://java.sun.com/jsp/jstl/fmt" %>

标签

描述

<fmt:formatNumber>

使用指定的格式或精度格式化数字

<fmt:parseNumber>

解析一个代表着数字,货币或百分比的字符串

<fmt:formatDate>

使用指定的风格或模式格式化日期和时间

<fmt:parseDate>

解析一个代表着日期或时间的字符串

<fmt:bundle>

绑定资源

<fmt:setLocale>

指定地区

<fmt:setBundle>

绑定资源

<fmt:timeZone>

指定时区

<fmt:setTimeZone>

指定时区

<fmt:message>

显示资源配置文件信息

<fmt:requestEncoding>

设置request的字符编码


SQL标签

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

<%@ taglib prefix="sql" 

           uri="http://java.sun.com/jsp/jstl/sql" %>

标签

描述

<sql:setDataSource>

指定数据源

<sql:query>

运行SQL查询语句

<sql:update>

运行SQL更新语句

<sql:param>

SQL语句中的参数设为指定值

<sql:dateParam>

SQL语句中的日期参数设为指定的java.util.Date 对象值

<sql:transaction>

在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运


XML 标签

JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:

<%@ taglib prefix="x" 

           uri="http://java.sun.com/jsp/jstl/xml" %>

在使用xml标签前,你必须将XML XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib:

· XercesImpl.jar

下载地址: http://www.apache.org/dist/xerces/j/

· xalan.jar

下载地址: http://xml.apache.org/xalan-j/index.html

标签

描述

<x:out>

<%= ... >,类似,不过只用于XPath表达式

<x:parse>

解析 XML 数据

<x:set>

设置XPath表达式

<x:if>

判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体

<x:forEach>

迭代XML文档中的节点

<x:choose>

<x:when><x:otherwise>的父标签

<x:when>

<x:choose>的子标签,用来进行条件判断

<x:otherwise>

<x:choose>的子标签,当<x:when>判断为false时被执行

<x:transform>

XSL转换应用在XML文档中

<x:param>

<x:transform>共同使用,用于设置XSL样式表


JSTL函数

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

<%@ taglib prefix="fn" 

           uri="http://java.sun.com/jsp/jstl/functions" %>

函数

描述

fn:contains()

测试输入的字符串是否包含指定的子串

fn:containsIgnoreCase()

测试输入的字符串是否包含指定的子串,大小写不敏感

fn:endsWith()

测试输入的字符串是否以指定的后缀结尾

fn:escapeXml()

跳过可以作为XML标记的字符

fn:indexOf()

返回指定字符串在输入字符串中出现的位置

fn:join()

将数组中的元素合成一个字符串然后输出

fn:length()

返回字符串长度

fn:replace()

将输入字符串中指定的位置替换为指定的字符串然后返回

fn:split()

将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回

fn:startsWith()

测试输入字符串是否以指定的前缀开始

fn:substring()

返回字符串的子集

fn:substringAfter()

返回字符串在指定子串之后的子集

fn:substringBefore()

返回字符串在指定子串之前的子集

fn:toLowerCase()

将字符串中的字符转为小写

fn:toUpperCase()

将字符串中的字符转为大写

fn:trim()

移除首位的空白

 (二)带你深入挖掘JSTL标签库

一、JSTL基础知识

1.概念:什么是JSTL?

JSTL:JavaServer Page Standard Tag Library。JSP标准标签库,是一个JSP标签集合,封装了JSP应用的通用核心功能。

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

2.JSTL标签库有哪些分类??

l核心标签(用得最多)

l国际化标签(I18N格式化标签)

l数据库标签(SQL标签,很少使用)

lXML标签(几乎不用)

lJSTL函数(EL函数)

3.JSTL包含的tld文件有哪些

目前常用的版本是JSTL1.1.2,包含5个tld文件。

c.tld:核心标记库:

包含一些Web应用常用标记,如循环、分支、表达式赋值和基本输入输出等,是最常使用的标记库。

fmt.tld:格式化/国际化标记库

用来解析数据的标记,如日期等。

sql.tld:数据库标记库

包含访问数据库的标记。

x.tld:XML标记库

包含被用来访问XML元素的标记。

fn.tld:函数标记库

包含了一些常用的函数,可以直接调用,例如,截取字符串等。 

4.JSTL的作用是什么

l由于JSTL是一套厂商已经定义好的标签,所有它的作用就是用来减少JSP中的Java代码,提高Java代码的重用性。

l使用时,往往需要和EL一起使用,EL用来为JSTL属性赋值,用来在JSTL的标签体中显示数据等。

l若没有EL,JSTL的作用将大打折扣 ,若如果没有JSTL,EL也难发挥作用,因此 JSTL和EL可以说成是相辅相成的。 

5.JSTL库安装及搭建

步骤如下:

1.从Apache的标准标签库下载jakarta-taglibs-standard-current.zip。

  官方地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

  下载jakarta-taglibs-standard-1.1.2.zip 包并解压。

2.JSTL环境搭建:

2.1 将jakarta-taglibs-standard-1.1.2/lib/下的两个jar文件standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下

2.2 将需要核心库标签的jsp文件上加入<%@taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core"%>

2.3 在需要插入jstl标签的时候<c:标签库中的标准标签>

二、JSTL核心标签库:c

JSTL的核心标签库标签共13个,作用:能够完成JSP页面的基本功能,减少编码工作。

问:JSTL的核心标签库标签,从功能上可以分为几类,并对详细说明。

功能上分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。

l表达式控制标签:out标签、set标签、remove标签、catch标签

l流程控制标签:if标签、choose标签、when标签、otherwise标签

l循环标签:forEach标签(集合/数组)、forTokens标签(字符串)

lURL操作标签:import标签、url标签、redirect标签、param标签

JSP页面引入核心标签库的代码为

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

A、表达式控制标签

1.<c:out>标签:表达式控制标签

<c:out>标签主要是用来输出数据对象(字符串、表达式)的内容或结果。

在使用Java脚本输出时常使用的方式为:

<% out.println(“字符串”)%> 或者 <%=表达式%> 

1)<c:out>标签的语法

l语法1:

<c:out value=”要显示的数据对象”

[escapeXml=”true|false”]

[default=”默认值”] /> 

l语法2:

<c:out value=”要显示的数据对象”

[escapeXml=”true|false”]>默认值</c:out>

 Tip:这两种方式没有本质的区别,只是格式上的差别。[escapeXml=”true|false”] [default=”默认值”]这些使用[]属性表示是不是必须的。 

2)<c:out>标签的属性

属性名 是否支持EL 属性类型 属性描述

value true Object 指定要输出的内容

escapeXml true Boolean 指定内容是否将<、>、&、等特殊字符进行HTML编码转换后再进行输出。默认值为true,不编码。

default true Object 指定如果value属性的值为null时所输出的默认值

3)<c:out>标签的使用范例

l<c:out value="<h1>JSTL标签库</h1>" />

没有进行html渲染直接输出:<h1>JSTL标签库</h1>

l<c:out value="<h1>JSTL标签库</h1>" escapeXml="false"  default=""/>

进行html渲染后再输出:JSTL标签库

 2.<c:set>标签:表达式控制标签

<c:set>标签作用:把某一个对象存在指定的域范围内,或者将某一个对象存储到Map或者JavaBean对象中。

 1)<c:set>标签的语法

<c:set>标签的编写共有5种语法格式。

l语法1:存值,把一个值放在指定的域范围内。

<c:set value=”值1” var=”name1”

[scope=”page|request|session|application”]/>

含义:把一个变量名为name1值为“值1”的变量存储在指定的scope范围内。

 l语法2:用闭合标签<>值2</> 替代属性value

<c:set var=”name2” [scope=”page|request|session|application”]>值2

</c:set>

含义:把一个变量名为name2,值为值2的变量存储在指定的scope范围内。

 l语法3:对象名.属性名 = “值3”

<c:set value=”值3”

target=”JavaBean对象” property=”属性名”/>

含义:把一个值为“值3”赋值给指定的JavaBean的属性名。相当与setter()方法。

 l语法4:对象名.属性名 = “值4”,值4在闭合标签里

<c:set  target=”JavaBean对象” property=”属性名”>

4

</c:set>

含义:把一个值4赋值给指定的JavaBean的属性名。 

l语法5:var 变量名 = 对象名.属性名 = “值5”

<c:set target="user"

property="name"  value="值5 " var="a"  />

含义:将JavaBean的属性赋值后,传给一个新变量

Tip:从功能上分语法1和语法2、语法3和语法4的效果是一样的,只是把value值放置的位置不同,至于使用那个根据个人的喜爱,语法1和语法2是向scope范围内存储一个值,语法3和语法4是给指定的JavaBean赋值。

 2)<c:set>标签的属性

属性名 是否支持EL 属性类型 属性描述

value true Object 用于指定属性值

var false String 用于指定要设置的web域属性的名称

scope false String 用于指定属性所在的web域

target true Object 用于指定要设置属性的对象,这个对象必须是JavaBean对象或Map集合

property true String 用于指定当前要为对象设置的属性名称

 3)<c:set>标签的使用范例

l<c:set target="${user }" property="name" value="大炮" />

<c:out value="${user.name }" />

l <c:set target="user" property="name"  

value="飞机" var="a"  />

l <c:out value="${a }" />

 3.<c:remove>标签:表达式控制标签

<c:remove>标签作用: 用来从指定的JSP范围内移除指定的变量。

 1)<c:remove>标签的语法

<c:remove var=”变量名” 移除变量

[scope=”page|request|session|application”]/>

其中var属性是必须的,scope可以以省略。

 2)<c:remove>标签的属性

属性名 是否支持EL 属性类型 属性描述

var false String 用于指定要设置的web域属性的名称

scope false String 用于指定属性所在的web域

 3)<c:remove>标签的使用范例

<c:set var="age" scope="session">25</c:set>

<c:remove var="age" />

 4.<c:catch>标签:表达式控制标签

<c:catch>标签作用:捕获嵌套在标签体中的内容抛出的异常。

 1)<c:catch>标签的语法

其语法格式如下:

<c:catch [var="varName"]>容易产生异常的代码</c:catch>

解析:var属性用于标识<c:catch>标签捕获的异常对象,它将保存在page这个Web域中。

 2)<c:catch>标签的属性

属性名 是否支持EL 属性类型 属性描述

var false String 用于标识<c:catch>标签捕获的异常对象

 3)<c:catch>标签的使用范例

<%-- 自定义一个变量errorInfo用于存储异常信息--%>

<c:catch var="errorInfo">

<%-- 实现了一段异常代码 --%>

<c:set target="person" property="hao"></c:set>

</c:catch>

<%--用EL表达式得到errorInfo的值,并使用<c:out>标签输出 --%>

异常:<c:out value="${errorInfo}" /><br />

<c:out value="${errorInfo.message}" /><br />

<c:out value="${errorInfo.cause}" /><br />

<c:out value="${errorInfo.stackTrace}" />

 B、流程控制标签

5.<c:if>标签:相当于if语句

<c:if>标签和程序中的if语句作用相同,用来实现条件控制。

 1)<c:if>标签的语法

l语法1:没有标签体内容(body)

<c:if test="testCondition" var="varName" [scope="{page|request|session|application}"]/>

 l有标签体内容

<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>

标签体内容

</c:if>

 2)<c:if>标签的属性

属性名 是否支持EL 属性类型 属性描述

test true Boolean 决定是否处理标签体中的内容的条件表达式

var false String 用于指定将test属性的执行结果保存到某个Web域中的某个属性的名称

scope false String 指定将test属性的执行结果保存到哪个web域中

 3)<c:if>标签的使用范例

<form action=" " method="post">

<input type="text" name="uname" value="${param.uname}">

<input type="submit" value="登录">

</form>

<c:if test="${param.uname=='admin'}" var="adminchock">

<c:out value="管理员欢迎您!"/>

</c:if>

${adminchock} // 这变量名里面存的不是true就是false

当输入admin时,输出管理员欢迎您,true。

 6.<c:choose>、<c:when>和<c:otherwise>标签:if else语句

<c:choose>、<c:when>和<c:otherwise>这3个标签通常情况下是一起使用的,<c:choose>标签作为<c:when>和<c:otherwise>标签的父标签来使用。

使用<c:choose>,<c:when>和<c:otherwise>三个标签,可以构造类似 “if-else if-else” 的复杂条件判断结构。

注意点:

l<c:choose>标签没有属性。

l<c:when>标签只有一个属性,在下表中有给出。

l<c:otherwise>标签没有属性。

 1)结合标签的语法

<c:choose>

<c:when test="条件1">

//业务逻辑1

         <c:when>

<c:when test="条件2">

//业务逻辑2

    <c:when>

  <c:when test="条件n">

//业务逻辑n

    <c:when>

    <c:otherwise>

//业务逻辑

</c:otherwise>

</c:choose>

 2)<c:when>标签的属性

属性名 是否支持EL 属性类型 属性描述

test true Boolean 决定是否处理标签体中的内容的条件表达式

 3)使用范例

  <c:set var="score" value="85"/> // 定义一个变量

    <c:choose>

        <c:when test="${score>=90}">

            你的成绩为优秀!

        </c:when>

        <c:when test="${score>70 && score<90}">

            您的成绩为良好!

        </c:when>

        <c:when test="${score>60 && score<70}">

            您的成绩为及格

        </c:when>

        <c:otherwise>  // 如果不满足以上条件

            对不起,您没有通过考试!

        </c:otherwise></c:choose>

 C、循环标签

7.<c:forEach>标签:相当于for each

该标签根据循环条件遍历集合(Collection)中的元素。

 1)<c:forEach>标签的语法

<c:forEach

    items="<object>"

    begin="<int>"

    end="<int>"

    step="<int>"

    var="<string>"

    varStatus="<string>">

     本体内容

</c:forEach>

【参数解析】:

  (1)var设定变量名用于存储从集合中取出元素。

  (2)items指定要遍历的集合的变量名。

  (3)varStatus设定变量名,该变量用于存放集合中元素的信息。    

  (4)begin、end用于指定遍历的起始位置和终止位置(可选)。

  (5)step指定循环的步长。

 2)<c:forEach>标签属性

属性名 是否支持EL 属性类型 属性描述

var false String 代表当前条目的变量名称,必须,无默认值

items true Arrays

Collection

Iterator

Enumeration

Map

String []args 指定要遍历的集合的集合对象名,必须,无默认值

begin true int 指定遍历的起始位置,不必须,默认值0

end true int 指定遍历的终止位置,不必须,默认值为集合中的最后一个元素

step true int 指定循环的步长,不必须,默认值为1

varStatus false String 代表循环状态的变量名称,不必须,无。

varStatus的4个状态:

属性名 类型 说明

index int 当前循环的索引值

count int 循环的次数

frist  boolean 是否为第一个位置

last  boolean 是否为最后一个位置

 3)<c:forEach>使用范例

  <h4><c:out value="forEach实例"/></h4>

   <%

           List<String>list = new ArrayList<String>();

           list.add(0, "贝贝");

           list.add(1, "晶晶");

           list.add(2, "欢欢");

           list.add(3, "莹莹");

           list.add(4, "妮妮");

           request.setAttribute("list", list);

    %>

l<B><c:out value="不指定begin和end的迭代:" /></B><br>

    <%--不使用begin和end的迭代,从集合的第一个元素开始,遍历到最后一个元素。 --%>

    <c:forEach var="fuwa" items="${list}">

         <c:out value="${fuwa}"/><br/>

    </c:forEach>

    l<B><c:out value="指定begin和end的迭代:" /></B><br>

    <%--指定begin的值为1、end的值为3、step的值为2,

        从第二个开始首先得到晶晶,每两个遍历一次,

        则下一个显示的结果为莹莹,end为3则遍历结束。 --%>

    <c:forEach var="fuwa" items="${list}" begin="1" end="3" step="2">

         <c:out value="${fuwa}"/><br/>

    </c:forEach>

    l<B><c:out value="输出整个迭代的信息:" /></B><br>

    <%--指定varStatus的属性名为s,并取出存储的状态信息 --%>

    <c:forEach var="fuwa"

               items="${list}"

               begin="3"

               end="4"

               varStatus="s"

               step="1">

          <c:out value="${fuwa}" />的四种属性:<br>

             所在位置,即索引:<c:out value="${s.index}" /><br>

             总共已迭代的次数:<c:out value="${s.count}" /><br>

             是否为第一个位置:<c:out value="${s.first}" /><br>

             是否为最后一个位置:<c:out value="${s.last}" /><br>  </c:forEach>

 8.<c:forTokens>标签:相当于String中的spilt()方法

该标签用于浏览字符串,并根据指定的字符将字符串截取。

 1)<c:forTokens>标签的语法

<c:forTokens

    items="<string>"

    delims="<string>"

    begin="<int>"

    end="<int>"

    step="<int>"

    var="<string>"

varStatus="<string>">

   本体内容

</c:forTokens>

 【参数说明】

  (1)items指定被迭代的字符串。

  (2)delims指定使用的分隔符。

  (3)var指定用来存放遍历到的成员。

  (4)begin指定遍历的开始位置(int型从取值0开始)。

  (5)end指定遍历结束的位置(int型,默认集合中最后一个元素)。

  (6)step遍历的步长(大于0的整型)。

  (7)varStatus存放遍历到的成员的状态信息。

2)<c:forTokens>标签参数

属性名 是否支持EL 属性类型 属性描述

var false String 代表当前条目的变量名称,必须,无默认值

items true String 指定要遍历的集合的集合对象名,必须,无默认值

begin true int 指定遍历的起始位置,不必须,默认值0

end true int 指定遍历的终止位置,不必须,默认值为集合中的最后一个元素

step true int 指定循环的步长,不必须,默认值为1

varStatus false String 代表循环状态的变量名称,不必须,无。

delims false String 指定使用的分隔符,相当于String类中的split()方法,使用正则表达式分隔,必须有,无默认值

 3)<c:forTokens>使用范例

<c:forTokens items="google,runoob,taobao" delims="," var="name">

   <c:out value="${name}"/><p>

</c:forTokens>

 D、URL操作标签

9.<c:import>标签

该标签可以把其他静态或动态文件包含到本JSP页面,与<jsp:include>的区别为:<jsp:include>只能包含同一个web应用中的文件。而<c:import>可以包含其他web应用中的文件,甚至是网络上的资源。

 1)<c:import>标签的语法

l语法1:

<c:import

    url=”url”

    [context=”context”]

    [value=”value”]

    [scope=”page|request|session|application”]

      [charEncoding=”encoding”]/>

 l语法2:

<c:import

    url=”url”

    varReader=”name”

    [context=”context”]

      [charEncoding=”encoding”]/>

 参数说明:

ØURL为资源的路径,当引用的资源不存在时系统会抛出异常,因此该语句应该放在<c:catch></c:catch>语句块中捕获。

Ø引用资源有两种方式:绝对路径和相对路径。

    使用绝对路径的示例如下:<c:import url=”http://www.baidu.com”>

    使用相对路径的示例如下:<c:import url=”aa.txt”>,aa.txt放在同一文件目录。

Ø如果以“/”开头表示应用的根目录下。例如:tomcat应用程序的根目录文件夹为webapps。导入webapps下的文件bb.txt的编写方式为:<c:import url=”/bb.txt”>

    如果访问webapps管理文件夹中其他web应用就要用context属性。

Øcontext属性用于在访问其他web应用的文件时,指定根目录。例如,访问root下的index.jsp的实现代码为:<c:import url=”/index.jsp” context=”/root”>

    等同于webapps/root/index.jsp

Øvar、scope、charEncoding、varReader是可选属性。

 2)<c:import>标签的属性

属性名 是否支持EL 属性类型 属性描述

url String 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源。

context 当使用相对路径访问外部context资源时,context指定了这个资源的名字。

charEncoding 所引入的数据的字符编码集

var false String 用于存储所引入的文本的变量

scope false String var属性的作用域

varReader 可选的用于提供java.io.Reader对象的变量

 3)<c:import>标签的使用范例

<c:import var="data" url="http://www.runoob.com"/>

 10.<c:url>标签

<c:url>标签用于在JSP页面中构造一个URL地址,其主要目的是实现URL重写。

 1)<c:url>标签的语法

l语法1:指定一个url不做修改,可以选择把该url存储在JSP不同的范围中。

<c:url

    value=”value”

    [var=”name”]

    [scope=”page|request|session|application”]

       [context=”context”]/>

 l语法2:配合 <c:param>标签给url加上指定参数及参数值,可以选择以name存储该url。

<c:url

    value=”value”

    [var=”name”]

    [scope=”page|request|session|application”]

    [context=”context”]>

    <c:param name=”参数名” value=”值”>

</c:url>

 2)<c:url>标签的主要属性

属性名 是否支持EL 属性类型 属性描述

value true String 指定要构造的URL

var false String 指定将构造出的URL结果保存到Web域中的属性名称

scop false String 指定将构造出的URL结果保存到哪个Web域中

 3)<c:url>标签使用范例

<c:url value="http://www.runoob.com"/>

 11.<c:redirect>标签

  该标签用来实现请求的重定向。同时可以配合使用<c:param>标签在url中加入指定的参数。

 1)<c:redirect>标签的语法

l语法1:

<c:redirect url=”url” [context=”context”]/>

 l语法2:

<c:redirect url=”url”[context=”context”]>

<c:param name=”name1” value=”value1”>

</c:redirect>

 参数说明:

Øurl指定重定向页面的地址,可以是一个string类型的绝对地址或相对地址。

Øcontext用于导入其他web应用中的页面。

 2)<c:redirect>标签的属性

属性名 是否支持EL 属性类型 属性描述

url true String 指定要转发或重定向到的目的资源的URL地址

context true String 当要使用相对路径重定向到同一个服务器下的其他Web应用程序中的资源时,context属性指定其他Web应用程序的名称

 3)<c:redirect>标签使用范例

<c:redirect url="http://www.runoob.com"/>

 12.<c:param>标签

JSP页面进行URL的相关操作时,经常要在URL地址后面附加一些参数。<c:param>标签可以嵌套在<c:import>、<c:url>或<c:redirect>标签内,为这些标签所使用的URL地址附加参数。

<c:param>标签在为一个URL地址附加参数时,将自动对参数值进行URL编码,例如,如果传递的参数值为“中国”, 则将其转换为“%d6%d0%b9%fa”后再附加到URL地址后面,这也就是使用<c:param>标签的最大好处。

 1)<c:param>标签的语法

<c:param name="<string>" value="<string>"/>

 2)<c:param>标签的属性

属性名 是否支持EL 属性类型 属性描述

name String URL中要设置的参数的名称

value String 参数的值

 3)<c:param>标签的使用范例

l<c:url value="http://www.baidu.com" var="paramUrl">

     <c:param name="userName" value="孤傲苍狼"/>

     <c:param name="pwd">123456</c:param>

</c:url>

<a href="${paramUrl}">百度首页(带参数)</a>

 l<c:redirect url="http://www.baidu.com">

<%--在重定向时使用<c:param>标签为URL添加了两个参数 --%>

   <c:param name="uname">GACL</c:param>

   <c:param name="password">123</c:param>

</c:redirect>

 三、JSTL格式化标签:fmt

    什么是格式化标签,有哪些主要标签??? 

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

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

 1.<fmt:formatNumber>标签:格式化数字

使用指定的格式或精度格式化数字。

 1)语法格式

<fmt:parseNumber

   value="<string>"

   type="<string>"

   pattern="<string>"

   parseLocale="<string>"

   integerOnly="<string>"

   var="<string>"

   scope="<string>"/>

 2)属性列表

属性 描述 是否必要 默认值

value 要显示的数字 是 无

type NUMBER,CURRENCY,或 PERCENT类型 否 Number

pattern 指定一个自定义的格式化模式用与输出 否 无

currencyCode 货币码(当type="currency"时) 否 取决于默认区域

currencySymbol 货币符号 (当 type="currency"时) 否 取决于默认区域

groupingUsed 是否对数字分组 (TRUE 或 FALSE) 否 true

maxIntegerDigits  整型数最大的位数 否 无

minIntegerDigits  整型数最小的位数 否 无

maxFractionDigits  小数点后最大的位数 否 无

minFractionDigits  小数点后最小的位数 否 无

var 存储格式化数字的变量 否 Print to page

scope var属性的作用域 否 page

 3)pattern属性的取值范围

使用pattern属性。这个属性可以让您在对数字编码时包含指定的字符。

符号 描述

0 代表一位数字

E 使用指数格式

# 代表一位数字,若没有则显示0,前导0和追尾0不显示。

. 小数点

, 数字分组分隔符

; 分隔格式

- 使用默认负数前缀

% 百分数

? 千分数

¤ 货币符号,使用实际的货币符号代替

X 指定可以作为前缀或后缀的字符

' 在前缀或后缀中引用特殊字符

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

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

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

 2.<fmt:parseNumber>:解析一个格式化的数字

解析一个代表着数字,货币或百分比的字符串

 1)语法格式

<fmt:parseNumber

  value="<string>"

  type="<string>"

  pattern="<string>"

  parseLocale="<string>"

  integerOnly="<string>"

  var="<string>"

  scope="<string>"/>

 2)属性列表

属性 描述 是否必要 默认值

value 要解析的数字 否 Body

type NUMBER,,CURRENCY,或 PERCENT 否 number

parseLocale 解析数字时所用的区域 否 默认区域

integerOnly 是否只解析整型数(true)或浮点数(false) 否 false

pattern 自定义解析模式 否 无

timeZone 要显示的日期的时区 否 默认时区

var 存储待解析数字的变量 否 Print to page

scope var属性的作用域 否 page

 3.<fmt:formatDate>:格式化日期

使用指定的风格或模式格式化日期和时间

1)语法格式

<fmt:formatDate

  value="<string>"

  type="<string>"

  dateStyle="<string>"

  timeStyle="<string>"

  pattern="<string>"

  timeZone="<string>"

  var="<string>"

  scope="<string>"/>

 2)属性列表

 3)<fmt:formatDate> 标签格式模式

 4.<fmt:parseDate>:解析格式化的日期

解析一个代表着日期或时间的字符串

 1)语法格式

<fmt:parseDate

   value="<string>"

   type="<string>"

   dateStyle="<string>"

   timeStyle="<string>"

   pattern="<string>"

   timeZone="<string>"

   parseLocale="<string>"

   var="<string>"

   scope="<string>"/>

 2)属性列表

 5.<fmt:bundle>

绑定资源,<fmt:bundle>标签将指定的资源束对出现在<fmt:bundle>标签中的<fmt:message>标签可用。这可以使您省去为每个<fmt:message>标签指定资源束的很多步骤。

 1)语法格式

<fmt:bundle baseName="<string>" prefix="<string>"/>

 2)属性列表

属性 描述 是否必要 默认值

basename 指定被载入的资源束的基础名称 是 无

prefix 指定<fmt:message>标签key属性的前缀 否 无

 6.<fmt:setLocale>:指定地区

指定地区

1)语法格式

<fmt:setLocale value="<string>" variant="<string>" scope="<string>"/>

 2)属性列表

属性 描述 是否必要 默认值

value 指定ISO-639 语言码和ISO-3166 国家码 是 en_US

variant 特定浏览器变体 否 无

scope Locale配置变量的作用域 否 Page

 7.<fmt:setBundle>

绑定资源

8.<fmt:timeZone>

指定时区

9.<fmt:setTimeZone>

指定时区

10.<fmt:message>

显示资源配置文件信息

11.<fmt:requestEncoding>

设置request的字符编码

 四、JSTL数据库标签库:sql

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

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

 1.<sql:setDataSource>

指定数据源

2.<sql:query>

运行SQL查询语句

3.<sql:update>

运行SQL更新语句

4.<sql:param>

SQL语句中的参数设为指定值

5.<sql:dateParam>

SQL语句中的日期参数设为指定的java.util.Date 对象值

6.<sql:transaction>

在共享数据库连接中提供嵌套的数据库行为元素,将所有语句以一个事务的形式来运行

 五、JSTL XML标签库:x

JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:

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

在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib下:

XercesImpl.jar

下载地址: http://www.apache.org/dist/xerces/j/

xalan.jar

下载地址: http://xml.apache.org/xalan-j/index.html

 1.<x:out>

<%= ... >,类似,不过只用于XPath表达式

2.<x:parse>

解析 XML 数据

3.<x:set>

设置XPath表达式

4.<x:if>

判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体

5.<x:forEach>

迭代XML文档中的节点

6.<x:choose>

<x:when>和<x:otherwise>的父标签

7.<x:when>

<x:choose>的子标签,用来进行条件判断

8.<x:otherwise>

<x:choose>的子标签,当<x:when>判断为false时被执行

9.<x:transform>

XSL转换应用在XML文档中

10.<x:param>

<x:transform>共同使用,用于设置XSL样式表

 六、JSTL函数标记库:fn

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

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

1.fn:contains()

测试输入的字符串是否包含指定的子串。

语法格式:

<c:if test="${fn:contains(<原始字符串>, <要查找的子字符串>)}">

2.fn:containsIgnoreCase()

测试输入的字符串是否包含指定的子串,大小写不敏感。

语法格式:

<c:if test="${fn:containsIgnoreCase(<原始字符串>, <要查找的子字符串>)}">

3.fn:endsWith()

测试输入的字符串是否以指定的后缀结尾。

语法格式:

<c:if test="${fn:endsWith(<原始字符串>, <要查找的子字符串>)}">

4.fn:escapeXml()

跳过可以作为XML标记的字符。

语法格式:

${fn:escapeXml(<要转义标记的文本>)}

5.fn:indexOf()

返回指定字符串在输入字符串中出现的位置。

语法格式:

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

6.fn:join()

将数组中的元素合成一个字符串然后输出。

语法格式:

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

7.fn:length()

返回字符串长度。

语法格式:

${fn:length(collection | string)}

8.fn:replace()

将输入字符串中指定的位置替换为指定的字符串然后返回。

语法格式:

${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}

9.fn:split()

将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回。

语法格式:

${fn:split(<带分隔符的字符串>, <分隔符>)}

10.fn:startsWith()

测试输入字符串是否以指定的前缀开始。

语法格式:

<c:if test="${fn:startsWith(<原始字符串>, <搜索的前缀>)}">

11.fn:substring()

返回字符串的子集。

语法格式:

${fn:substring(<string>, <beginIndex>, <endIndex>)}

12.fn:substringAfter()

返回字符串在指定子串之后的子集。

语法格式:

${fn:substringAfter(<string>, <substring>)}

13.fn:substringBefore()

返回字符串在指定子串之前的子集。

语法格式:

${fn:substringBefore(<string>, <substring>)}

14.fn:toLowerCase()

将字符串中的字符转为小写。

语法格式:

${fn.toLowerCase(<string>)}

15.fn:toUpperCase()

将字符串中的字符转为大写。

语法格式:

${fn.toUpperCase(<string>)}

16.fn:trim()

移除首位的空白符。

语法格式:

${fn:trim(<string>)}

 下面将会对以下标签进行详细说明

<c:out> 标签

<c:set> 标签

<c:remove> 标签

<c:if> 标签

<c:choose>, <c:when>, <c:otherwise> 标签

<c:forEach>, <c:forTokens> 标签

<fmt:formatNumber>标签

<fmt:parseNumber> 标签

<fmt:formatDate> 标签

 <c:out> 标签

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

举例来说,如果想要访问customer.address.street,只需要这样写:<c:out value="customer.address.street">。

<c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。

语法格式

<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>

属性

<c:out>标签有如下属性:

属性 描述 是否必要 默认值

value 要输出的内容 是 无

default 输出的默认值 否 主体中的内容

escapeXml 是否忽略XML特殊字符 否 true

 <c:set> 标签

<c:set>标签用于设置变量值和对象属性。

<c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。

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

语法格式

<c:set

   var="<string>"   变量的名称

   value="<string>"  值

   target="<string>"  

   property="<string>"

   scope="<string>"/> 作用域  page   request    session     application

 <c:set>标签有如下属性:

属性 描述 是否必要 默认值

value 要存储的值 否 主体的内容

target 要修改的属性所属的对象 否 无

property 要修改的属性 否 无

var 存储信息的变量 否 无

scope var属性的作用域 否 Page

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

实例演示

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

    pageEncoding="UTF-8"%>

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

<html>

<head>

<title>c:set 标签实例</title>

</head>

<body>

<c:set var="salary" scope="session" value="${2000*2}"/>

<c:out value="${salary}"/>

</body>

</html>

运行结果如下:4000

 <c:remove> 标签

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

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

语法格式

<c:remove var="<string>" scope="<string>"/>

 <c:remove>标签有如下属性:

属性 描述 是否必要 默认值

var 要移除的变量名称 是 无

scope 变量所属的作用域 否 所有作用域

实例演示

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

    pageEncoding="UTF-8"%>

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

<html>

<head>

<title>c:remove 标签实例</title>

</head>

<body>

<c:set var="salary" scope="session" value="${2000*2}"/>

<p>salary 变量值: <c:out value="${salary}"/></p>

<c:remove var="salary"/>

<p>删除 salary 变量后的值: <c:out value="${salary}"/></p>

</body>

</html>

运行结果如下:

salary 变量值: 4000

删除 salary 变量后的值:

 <c:if> 标签

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

<c:if>标签有如下属性:

属性 描述 是否必要 默认值

test 条件 是 无

var 用于存储条件结果的变量 否 无

scope var属性的作用域 否 page

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

    pageEncoding="UTF-8"%>

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

<html>

<head>

<title>c:if 标签实例</title>

</head>

<body>

<c:set var="salary" scope="session" value="${2000*2}"/>

<c:if test="${salary > 2000}">

   <p>我的工资为: <c:out value="${salary}"/><p>

</c:if>

</body>

</html>

 <c:choose>, <c:when>, <c:otherwise> 标签

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

switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。

语法格式

<c:choose>

    <c:when test="<boolean>"/>

        ...

    </c:when>

    <c:when test="<boolean>"/>

        ...

    </c:when>

    ...

    ...

    <c:otherwise>

        ...

    </c:otherwise>

</c:choose>

 属性

·<c:choose>标签没有属性。

·<c:when>标签只有一个属性,在下表中有给出。

·<c:otherwise>标签没有属性。

<c:when>标签的属性如下:

属性 描述 是否必要 默认值

test 条件 是 无

实例演示

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

    pageEncoding="UTF-8"%>

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

<html>

<head>

<title>c:choose 标签实例</title>

</head>

<body>

<c:set var="salary" scope="session" value="${2000*2}"/>

<p>你的工资为 : <c:out value="${salary}"/></p>

<c:choose>

    <c:when test="${salary <= 0}">

       太惨了。

    </c:when>

    <c:when test="${salary > 1000}">

       不错的薪水,还能生活。

    </c:when>

    <c:otherwise>

        什么都没有。

    </c:otherwise>

</c:choose>

</body>

</html>

 <c:forEach>, <c:forTokens> 标签

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

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

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

forEach 语法格式

<c:forEach

    items="<object>"

    begin="<int>"

    end="<int>"

    step="<int>"

    var="<string>"

    varStatus="<string>">

    ...

 属性

<c:forEach>标签有如下属性:

属性 描述 是否必要 默认值

items 要被循环的信息 否 无

begin 开始的元素(0=第一个元素,1=第二个元素) 否 0

end 最后一个元素(0=第一个元素,1=第二个元素) 否 Last element

step 每一次迭代的步长 否 1

var 代表当前条目的变量名称 否 无

varStatus 代表循环状态的变量名称 否 无

<c:forEach>实例演示

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

    pageEncoding="UTF-8"%>

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

<html>

<head>

<title>c:forEach 标签实例</title>

</head>

<body>

<c:forEach var="i" begin="1" end="5">

   Item <c:out value="${i}"/><p>

</c:forEach>

</body>

</html>

运行结果如下:

Item 1

Item 2

Item 3

Item 4

Item 5

 forTokens 语法格式

<c:forTokens

    items="<string>"

    delims="<string>"

    begin="<int>"

    end="<int>"

    step="<int>"

    var="<string>"

    varStatus="<string>">

属性

<c:forTokens>标签与<c:forEach>标签有相似的属性,不过<c:forTokens>还有另一个属性:

属性 描述 是否必要 默认值

delims 分隔符 是 无

 <c:forTokens>演示实例

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

    pageEncoding="UTF-8"%>

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

<html>

<head>

<title>c:forTokens 标签实例</title>

</head>

<body>

<c:forTokens items="google,runoob,taobao" delims="," var="name">

   <c:out value="${name}"/><p>

</c:forTokens>

</body>

</html>

运行结果如下:

google

runoob

taobao

 格式化标签

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

<fmt:formatNumber>标签

<fmt:formatNumber>标签用于格式化数字,百分比,货币。

语法格式

<fmt:formatNumber

  value="<string>"

  type="<string>"

  pattern="<string>"

  currencyCode="<string>"

  currencySymbol="<string>"

  groupingUsed="<string>"

  maxIntegerDigits="<string>"

  minIntegerDigits="<string>"

  maxFractionDigits="<string>"

  minFractionDigits="<string>"

  var="<string>"

  scope="<string>"/>

 属性

<fmt:formatNumber>标签有如下属性:

属性 描述 是否必要 默认值

value 要显示的数字 是 无

type NUMBER,CURRENCY,或 PERCENT类型 否 Number

pattern 指定一个自定义的格式化模式用与输出 否 无

currencyCode 货币码(当type="currency"时) 否 取决于默认区域

currencySymbol 货币符号 (当 type="currency"时) 否 取决于默认区域

groupingUsed 是否对数字分组 (TRUE 或 FALSE) 否 true

maxIntegerDigits 整型数最大的位数 否 无

minIntegerDigits 整型数最小的位数 否 无

maxFractionDigits 小数点后最大的位数 否 无

minFractionDigits 小数点后最小的位数 否 无

var 存储格式化数字的变量 否 Print to page

scope var属性的作用域 否 page

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

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

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

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

符号 描述

0 代表一位数字,若没有则显示0

E 使用指数格式

# 代表一位数字

. 小数点    ####.###

, 数字分组分隔符   ###,###

; 分隔格式

- 使用默认负数前缀

% 百分数

? 千分数

¤ 货币符号,使用实际的货币符号代替

X 指定可以作为前缀或后缀的字符

' 在前缀或后缀中引用特殊字符

实例演示

<%@ 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" %>

 <html>

<head>

  <title>JSTL fmt:formatNumber 标签</title>

</head>

<body>

<h3>数字格式化:</h3>

<c:set var="balance" value="120000.2309" />

<p>格式化数字 (1): <fmt:formatNumber value="${balance}"

            type="currency"/></p>

<p>格式化数字 (2): <fmt:formatNumber type="number"

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

<p>格式化数字 (3): <fmt:formatNumber type="number"

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

<p>格式化数字 (4): <fmt:formatNumber type="number"

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

<p>格式化数字 (5): <fmt:formatNumber type="percent"

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

<p>格式化数字 (6): <fmt:formatNumber type="percent"

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

<p>格式化数字 (7): <fmt:formatNumber type="percent"

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

<p>格式化数字 (8): <fmt:formatNumber type="number"

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

<p>美元 :

<fmt:setLocale value="en_US"/>

<fmt:formatNumber value="${balance}" type="currency"/></p>

</body>

</html>

运行结果如下:

数字格式化:

格式化数字 (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

 <fmt:parseNumber> 标签

<fmt:parseNumber>标签用来解析数字,百分数,货币。

语法格式

<fmt:parseNumber

  value="<string>"

  type="<string>"

  pattern="<string>"

  parseLocale="<string>"

  integerOnly="<string>"

  var="<string>"

  scope="<string>"/>

属性

<fmt:parseNumber>标签有如下属性:

属性 描述 是否必要 默认值

value 要解析的数字 否 Body

type NUMBER,,CURRENCY,或 PERCENT 否 number

parseLocale 解析数字时所用的区域 否 默认区域

integerOnly 是否只解析整型数(true)或浮点数(false) 否 false

pattern 自定义解析模式 否 无

timeZone 要显示的日期的时区 否 默认时区

var 存储待解析数字的变量 否 Print to page

scope var属性的作用域 否 page

pattern属性与<fmt:formatNumber>标签中的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" %>

<html>

<head>

  <title>JSTL fmt:parseNumber 标签</title>

</head>

<body>

<h3>数字解析:</h3>

<c:set var="balance" value="1250003.350" />

 

<fmt:parseNumber var="i" type="number" value="${balance}" />

<p>数字解析 (1) : <c:out value="${i}" /></p>

<fmt:parseNumber var="i" integerOnly="true"

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

<p>数字解析 (2) : <c:out value="${i}" /></p>

 </body>

</html>

运行结果如下:

数字解析:

数字解析 (1) : 1250003.35

数字解析 (2) : 1250003

 <fmt:formatDate> 标签

<fmt:formatDate>标签用于使用不同的方式格式化日期。

语法格式

<fmt:formatDate

  value="<string>"

  type="<string>"

  dateStyle="<string>"

  timeStyle="<string>"

  pattern="<string>"

  timeZone="<string>"

  var="<string>"

  scope="<string>"/>

属性

<fmt:formatDate>标签有如下属性:

属性 描述 是否必要 默认值

value 要显示的日期 是 无

type DATE, TIME, 或 BOTH 否 date

dateStyle FULL, LONG, MEDIUM, SHORT, 或 DEFAULT 否 default

timeStyle FULL, LONG, MEDIUM, SHORT, 或 DEFAULT 否 default

pattern 自定义格式模式 否 无

timeZone 显示日期的时区 否 默认时区

var 存储格式化日期的变量名 否 显示在页面

scope 存储格式化日志变量的范围 否 页面

 <fmt:formatDate> 标签格式模式

代码 描述 实例

G 时代标志 AD

y 不包含纪元的年份。如果不包含纪元的年份小于 10,则显示不具有前导零的年份。 2002

M 月份数字。一位数的月份没有前导零。 April & 04

d 月中的某一天。一位数的日期没有前导零。 20

h 12 小时制的小时。一位数的小时数没有前导零。 12

H 24 小时制的小时。一位数的小时数没有前导零。 0

m 分钟。一位数的分钟数没有前导零。 45

s 秒。一位数的秒数没有前导零。 52

S 毫秒 970

E 周几 Tuesday

D 一年中的第几天 180

F 一个月中的第几个周几 2 (一个月中的第二个星期三)

w 一年中的第几周r 27

W 一个月中的第几周 2

a a.m./p.m. 指示符 PM

k 小时(12 小时制的小时) 24

K 小时(24 小时制的小时) 0

z 时区 中部标准时间

'   转义文本

''   单引号

 实例演示

<%@ 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" %>

<html>

<head>

  <title>JSTL fmt:dateNumber 标签</title>

</head>

<body>

<h3>日期格式化:</h3>

<c:set var="now" value="<%=new java.util.Date()%>" />

<p>日期格式化 (1): <fmt:formatDate type="time"  value="${now}" /></p>

<p>日期格式化 (2): <fmt:formatDate type="date"  value="${now}" /></p>

<p>日期格式化 (3): <fmt:formatDate type="both"  value="${now}" /></p>

<p>日期格式化 (4): <fmt:formatDate type="both"

            dateStyle="short" timeStyle="short" value="${now}" /></p>

<p>日期格式化 (5): <fmt:formatDate type="both"

            dateStyle="medium" timeStyle="medium" value="${now}" /></p>

<p>日期格式化 (6): <fmt:formatDate type="both"

            dateStyle="long" timeStyle="long" value="${now}" /></p>

<p>日期格式化 (7): <fmt:formatDate pattern="yyyy-MM-dd" value="${now}" /></p>

</body> </html>

以上实例运行结果:

日期格式化:

日期格式化 (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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值