JSTL-格式化标签库

在JSP页面中使用标签库代替传统Java片段语文来实现页面显示逻辑已经不是新技术了,但是自定义的标签容易造成重复定义和非标准的实现,所以JSTL(JSP Standard Tag Library,JSP标准标签库)诞生了。JSTL是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的(标准是SUN制定,apache实现的,SUN收录了apache的实现)。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上。

VersionJSTL versionRequirements
Standard 1.2.3JSTL 1.2Servlet 2.5, JavaServer Pages 2.1
Standard 1.1JSTL 1.1Servlet 2.4, JavaServer Pages 2.0
Standard 1.0JSTL 1.0Servlet 2.3, JavaServer Pages 1.2


Sun 发布的标准 JSTL1.1 标签库有以下几个标签:

  • 核心标签库:包含 Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。
  • 格式化标签库:用来格式化显示数据的工作,比如:对不同区域的日期格式化等。
  • 数据库标签库:可以做访问数据库的工作。
  • XML 标签库:用来访问 XML 文件的工作,这是 JSTL 标签库的一个特点。
  • 函数标签库:用来读取已经定义的某个函数。

使用JSTL的步骤:

  • 在项目中引入jstl的相关jar包,确保jar存在:jstl.jar、standard。
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>
  • 在需要使用标签的JSP页面上使用taglib指令引入标签库。
  • 在需要使用标签的位置直接使用标签库。
格式化标签:
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL_FMT</title>
</head>
<body>

<!-- ****格式化数字【fmt:formatNumber】****
    value="要显示的数字,必填项,默认为主体内容"
    type="类型(默认数字NUMBER、货币CURRENCY、百分比PERCENT)"
    pattern="格式模式"
    currencyCode="货币码,当type='CURRENCY'时,默认为当前区域"
    currencySymbol="货币符号,当type='CURRENCY'时,默认为当前区域"
    groupingUsed="是否对数字分组,默认为true"
    maxIntegerDigits="整型数最大位数,多余部分直接截取"
    minIntegerDigits="整型数最小位数,不足补0"
    maxFractionDigits="小数点后最大的位数,多余部分四舍五入"
    minFractionDigits="小数点后最小的位数,不足补0"
    var="存储格式化数字的变量,默认直接输出"
    scope="var属性的作用域(page request session application),默认为page"
    模式属性值:
        0   代表一位数字,没有则显示为0
        E   使用指数格式
        #   代表一个数字,前导零和追尾零不显示
        .   小数点
        ,   数字分组分隔符
        -   使用默认的负数前缀
        %   百分数
        ¤   货币符号
 -->
<fmt:formatNumber>123.456</fmt:formatNumber><fmt:formatNumber value="123.456" type="CURRENCY" currencySymbol="¥¥"/><fmt:formatNumber value="123.456" type="CURRENCY" currencyCode="EUR"/><fmt:formatNumber value="123.456" maxIntegerDigits="5" minIntegerDigits="3"/><fmt:formatNumber value="123.456" maxFractionDigits="3" minFractionDigits="2"/><fmt:formatNumber value="89765446123.456" pattern="#,###.00"/><fmt:formatNumber value="89765446123.456" pattern="#,###.00" groupingUsed="false"/><fmt:formatNumber value="0.44" pattern="#.##%"/><fmt:formatNumber value="0.44" type="PERCENT"/><fmt:formatNumber value="89765446123.456" pattern="###E0"/>
<!-- 输出:
123.456、¥¥123.46 、 EUR123.46 、 123.456 、 123.456 、 89,765,446,123.46 、 89765446123.46 、 44% 、 44% 、 89.8E9 
-->

<hr>
<!-- ****解析数字【fmt:parseNumber】****
    value="要解析的数字,默认为主体内容"
    type="类型(默认数字NUMBER、货币CURRENCY、百分比PERCENT)"
    parseLocale="解析数字时所用区域,默认为当前区域"
    integerOnly="是否只解析整型数(true)或浮点数(false),默认为false"
    pattern="解析模式"
    timeZone="要显示日期的时区,默认为当前时区"
    var="存储解析数字的变量,默认为当前页面"
    scope="var属性的作用域(page request session application),默认为page"
 -->
<fmt:parseNumber>123.456</fmt:parseNumber><fmt:parseNumber value="¥123.46" type="CURRENCY"/><fmt:parseNumber value="$123.46" type="CURRENCY" parseLocale="en_US"/><fmt:parseNumber value="123.456" integerOnly="true"/><fmt:parseNumber value="89.8E9" pattern="###E0"/>
<!-- 输出:
123.456 、 123.46 、 123.46 、 123 、 89800000000 
-->

<hr>
<!-- ****格式化日期【fmt:formatDate】****
    value="要格式化的日期,必填项"
    type="类型(默认日期DATE、时间TIME、日期+时间BOTH)"
    dateStyle="FULL, LONG, MEDIUM, SHORT, 或默认DEFAULT"
    timeStyle="FULL, LONG, MEDIUM, SHORT, 或默认DEFAULT"
    pattern="格式模式"
    timeZone="要显示日期的时区,默认为当前时区"
    var="存储格式化日期的变量,默认为当前页面"
    scope="var属性的作用域(page request session application),默认为page"
    模式的属性:
        y   年份
        M   月份
        d   月中的某一天
        h   12小时制的小时
        H   24小时制的小时
        m   分钟
        s   秒
        S   毫秒
        E   周几
        D   一年中的第几天
        F   一月中的第几个周几
        w   一年中的第几周
        W   一月中的第几周
        a   a.m./p.m. 指示符
        k   小时(12小时制的小时)
        K   小时(24小时制的小时)
        z   时区
 -->
<c:set var="now" value="<%=new Date()%>" />
<fmt:formatDate value="${now}"/><fmt:formatDate value="${now}" type="TIME"/><fmt:formatDate value="${now}" type="BOTH"/><fmt:formatDate type="BOTH" dateStyle="FULL" timeStyle="FULL" value="${now}" /><fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss E Z a"/>
<!-- 输出:
2017-1-15 、 16:20:37 、 2017-1-15 16:20:37 、 2017年1月15日 星期日 下午04时20分37秒 CST 、 2017-01-15 16:20:37 星期日 +0800 下午  
-->

<hr>
<!-- ****解析日期【fmt:parseDate】****
    value="要显示的日期,必填项,默认为主体内容"
    type="DATE、TIME、BOTH,默认DATE"
    dateStyle="FULL, LONG, MEDIUM, SHORT, 或默认DEFAULT"
    timeStyle="FULL, LONG, MEDIUM, SHORT, 或默认DEFAULT"
    pattern="格式模式"
    timeZone="要显示日期的时区,默认为当前时区"
    var="存储解析日期的变量,默认为当前页面"
    scope="var属性的作用域(page request session application),默认为page"
 -->
<fmt:parseDate>2017-1-15 16:20:37</fmt:parseDate><fmt:parseDate type="BOTH">2017-1-15 16:20:37</fmt:parseDate><fmt:parseDate type="BOTH" dateStyle="FULL" timeStyle="FULL">2017年1月15日 星期日 下午04时20分37秒 CST</fmt:parseDate><fmt:parseDate pattern="yyyy-MM-dd HH:mm:ss E Z a">2017-01-15 16:20:37 星期日 +0800 下午</fmt:parseDate>
<!-- 输出:
Sun Jan 15 00:00:00 CST 2017 、 Sun Jan 15 16:20:37 CST 2017 、 Sun Jan 15 16:20:37 CST 2017 、 Sun Jan 15 16:20:37 CST 2017 
-->
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值