Java自定义标签

标签能干什么?

1.循环
2.修改(可以用于格式化时间)
3.判断(相当于if else)

jsp标签规范分为

1. 1.0时代(继承TagSupport(传统,复杂))
2. 2.0时代(继承SimpleTagSupport(新生代,简单))  

步骤

1.创建标签库类
2.创建标签库文件
3.页面引入

下面就拿2.0规范,格式化时间功能实例举个栗子: 1.创建标签库类 (继承SimpleTagSupport,实现doTag()即可)

public class DateTag extends SimpleTagSupport   {
    private String date;
    public void setDate(String date) {
        this.date = date;
    }
    @Override
    public void doTag() throws JspException, IOException {
        SimpleDateFormat sdf1= new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
        SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd");
        String result = "";
        try {
            result =sdf2.format(sdf1.parse(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        getJspContext().getOut().write(result);
    }
}

2.创建标签库文件(在WEB-INF)下面,以tld为后缀。<short-name>内填标签库类的路径<name>在页面上用到。<rtexprvalue>表示可以支持EL表达式

<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">
    <tlib-version>1.0</tlib-version>
    <short-name>myshortname</short-name>
    <uri>https://segmentfault.com/u/mshu</uri>
    <tag>
        <name>DateFormat</name>
        <tag-class>tag.DateTag</tag-class>
        <body-content>scriptless</body-content>
        <attribute>
            <name>date</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>

3.页面引入(或者也可以在web.xml中引入)

<%@ taglib prefix="ex" uri="/WEB-INF/tld/date.tld"%>
<ex:DateFormat date="${item.birthdate}"/>   

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏cmazxiaoma的架构师之路

一个Java小白面试得力集团的收获

2603
来自专栏.NET后端开发

ADO.NET入门教程(六) 谈谈Command对象与数据检索

摘要 到目前为止,我相信大家对于ADO.NET如何与外部数据源建立连接以及如何提高连接性能等相关知识已经牢固于心了。连接对象作为ADO.NET的主力先锋,为用户...

4157
来自专栏菜鸟前端工程师

JavaScript学习笔记025-闭包0缓存计算0console属性

1123
来自专栏JAVA同学会

JAVA 11 初体验

随着JAVA每半年发布一次新版本,前几天JAVA 11隆重登场。在JAVA 11中,增加了一些新的特性和api,

1545
来自专栏跟着阿笨一起玩NET

跨线程调用窗体控件

本文转载:http://www.csharpwin.com/csharpspace/11279r6763.shtml

2931
来自专栏about云

discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现

我们在进行日志分析的时候,那么日志的数据是杂乱无章的,或则说日志的数据并不是我们都想看到的。所以我们需要对里面的数据进行清洗,说的直白一点就是要过滤里面的字符串...

3597
来自专栏安恒网络空间安全讲武堂

记一次JS木马分析

记一次JS木马分析 0x00 前言 随着 javascript 这类脚本语言的快速发展,它能展现的内容越来越多样,所运用的功能变得越来越强大。当运用在 web ...

5038
来自专栏恰童鞋骚年

《你必须知道的.NET》读书笔记:从Hello World认识IL

  IL是.NET框架中间语言(Intermediate Language)的缩写。使用.NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但...

1122
来自专栏安恒网络空间安全讲武堂

网鼎杯第一场writeup

payload:/view.php?no=-6 unIon/**/select 1,table_name,3,4 from information_schema...

2352
来自专栏Fundebug

Async/Await替代Promise的6个理由

译者按: Node.js的异步编程方式有效提高了应用性能;然而回调地狱却让人望而生畏,Promise让我们告别回调函数,写出更优雅的异步代码;在实践过程中,却发...

1074

扫码关注云+社区

领取腾讯云代金券