一、什么是Taglib?

如果你曾使用JSP页面来作为渲染视图的话,我相信你对JSTL标签库一定不会感到陌生。

比如:

1.forEach代码片段


<c:forEach var="i" begin="1" end="5">Item <c:out value="${i}"/><p>
</c:forEach>

2.formatNumber 代码片段


<fmt:formatNumber type="number" pattern="###.###E0" value="${balance}" />

3.fn:length代码片段


${fn:length(string1)}

在我写代码的过程中,以上三种类型的JSTL标签使用频率最高。

它们分别是

  1. 核心标签
  2. 格式化标签
  3. JSTL函数

JSTL标签库可通过以下方式进行导入。


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

标签库(tag library),是指由在JSP页面中使用的标记所组成的库。JSP容器推出时带有一个小型的、默认的标记库。JSTL是其中一种,最为常用。

二、自定义function

但在实际的应用当中,JSTL并不能完全满足我们的需求,所以我们要能够实时的对其进行扩展。

有这样一种场景。

1.数据库中更新日期的数据格式(bigint型,13位长度。)如下:

`update_date` bigint(13) NOT NULL DEFAULT '0' COMMENT '更新时间',

2.对应的Java类中的格式(Long )为:

protected Long update_date;
public Long getUpdate_date() {return update_date;
}public void setUpdate_date(Long update_date) {this.update_date = update_date;
}

3.JSP页面中显示的格式为:

这种情况下,JSTL就“黔驴技穷”了,我们需要新增一种function来实现它。

第一步,Java端新建格式化方法

package com.cmower.common.util;public class DateUtil {public static final String PATTERN_STANDARD = "yyyy-MM-dd HH:mm:ss";public static String formatTime(Long time) {if (time == null) {return " - ";}if (time == 0L) {return "  - ";}Date date = new Date(time);SimpleDateFormat formatter = new SimpleDateFormat(PATTERN_STANDARD);return formatter.format(date);}
}

第二步,把formatTime方法的使用权限传递给JSP页面

首先,新建fns.tld文件,目录如下:

内容如下:

<?xml version="1.0" encoding="UTF-8" ?><taglib 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-jsptaglibrary_2_0.xsd" version="2.0"><description>server function library</description><tlib-version>1.0</tlib-version><short-name>fns</short-name><uri>http://localhost/fns</uri><function><description>转码long型日期值</description><name>formatTime</name><function-class>com.cmower.common.util.DateUtil</function-class><function-signature>java.lang.String formatTime(java.lang.Long)</function-signature><example>${fns:formatTime(long)}</example></function></taglib>
  1. <short-name>fns</short-name>定义该taglib的前缀为fns;
  2. <name>formatTime</name>定义该taglib的function名为formatTime;
  3. <function-class>com.cmower.common.util.DateUtil</function-class>function的类名;
  4. <function-signature>java.lang.String formatTime(java.lang.Long)</function-signature>function关联Java端的方法名。

然后,我需要把该自定义标签库导入到对应的JSP页面中:

<%@ taglib prefix="fns" uri="/WEB-INF/tlds/fns.tld" %>

通过以下代码调用它:

${fns:formatTime(update_date)}

通过以上步骤就能够完成自定义Taglib了,小技能,大功效。


从前日色变得慢,一生只够爱一人。微信扫一扫,关注沉默王二公众号。

JSP标签库Taglib之自定义function篇,轻松实现日期格式化相关推荐

  1. SpringMVC对JSP的支持---Spring的JSP标签库---Spring通用标签库

    1. Spring通用标签库 JSP的标签库 除了JSTL(JSP 标准标签库),Spring提供了两个标签库 用来帮助定义Spring MVC Web的视图.  Spring的 表单绑定 JSP标签 ...

  2. [JSP]自定义标签库taglib

    自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...

  3. java 自定义taglib_[JSP]自定义标签库taglib

    自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.SimpleTagSuppo ...

  4. 使用tld文件自定义jsp标签库

    目录 一,标签库描述文件(tld文件) 二,标签处理类 三,在JSP页面中使用自定义的标签 四,举个例子 通过Java的TagSupport类或者BodyTagSupport类,和配套的tld文件,可 ...

  5. jsp java el表达式_jsp相关笔记,el表达式、jsp标签库(jstl)

    一.jsp基础部分 1.介绍 概念 JSP(Java Server Page),java服务器端页面,可以定义html标签,又可以定义java代码. 原理 JSP本质上就是一个Servlet 2.JS ...

  6. html5自定义标签库,Bootstrap tagsinput自定义标签插件

    tagsinput是一款基于Bootstrap的自定义标签插件.该自定义标签插件提供api接口,可以将input和select元素转换为标签.并能和typehead.js插件结合,提供查询提示信息. ...

  7. java标签库 taglib pdf格式_JSP系列教材 (十)- JSTL Java Standard Tag Library 标准标签库...

    JSTL JSP Standard Tag Library 标准标签库 JSTL允许开人员可以像使用HTML标签 那样在JSP中开发Java功能. JSTL库有core, i18n, fmt, sql ...

  8. 学会怎样使用Jsp 内置标签、jstl标签库及自定义标签

    学习jsp不得不学习jsp标签,一般来说,对于一个jsp开发者,可以理解为jsp页面中出现的java代码越少,对jsp的掌握就越好,而替换掉java代码的重要方式就是使用jsp标签.  jsp标签的分 ...

  9. Java第四十八天,Jsp之Taglib,自定义标签详解

    理论知识 一.标签的本质是什么 自定义标签实际上是一个实现了特定接口的Java类,它封装了一些常用功能,在运行时被相应的代码所替换:它与 JavaBean 的最大区别就是 JavaBean 没有默认的 ...

最新文章

  1. centos7安装mysql 依赖检测失败:_gcc-centos7安装mysqlworkbench依赖检测失败
  2. as3 访问远程计算机,Flash AS3中数据发送与接收
  3. 11行Python代码,发现了室友U盘的惊天秘密。
  4. Linux 设备驱动开发 —— Tasklets 机制浅析
  5. leetcode22. 括号生成
  6. 这道 Go 题目外网超过 80% 的人都答错了,你来试试...
  7. ActiveMQ常见配置
  8. java基础视频教程 学习笔记
  9. DotNetBar 14.1.X 安装+源码=不错选择
  10. win10下自动运行python程序脚本
  11. ESP8266-NodeMCU驱动TFT-SPI彩屏(驱动芯片ILI9341)- 第一个例程【1】
  12. 【数据库的备份与还原】
  13. Day2多种抓包工具介绍以及使用封包监听工具找到挑战数据包实现发送数据包进行挑战
  14. P2550 [AHOI2001]彩票摇奖(C语言)
  15. CSS用flex布局两端对齐,列不满左对齐
  16. 《Web系统与技术》教材 第1章 Web系统与技术的基础知识 课件1(PPTX)
  17. STM32F103 晶振问题详解
  18. 美联致美, 专属定制之美,让美丽不可复制
  19. android状态栏一体化(沉浸式状态栏)
  20. C#生成自定义登录验证码(微信公众号验证码,邮箱验证码等)

热门文章

  1. Photoshop CC 2019( ps cc)新增功能使用方法介绍
  2. php表格怎么导成excel,cad表格如何导出到excel
  3. 关于三菱GXWORK安装失败或者安装向导被中断的解决办法
  4. js本地存储函数封装基于localStorage本地存储
  5. 以太坊智能合约 —— 最佳安全开发指南
  6. Pydicom User Giude
  7. 图片隐写术 - 透明部落通过BMP的RGB通道隐藏PE数据
  8. php的getopt函数,PHP 中 getopt 函数的用法
  9. Mac_图片压缩_pngquant
  10. 如何通过C语言代码表白女程序媛 (直男必看)