项目文件
格式化日期输出标签
a)继承javax.servlet.jsp.tagext.SimpleTagSupport简单标签的支持类,不允许标签内有主体内容。
b)重写doTag()方法:当标签执行时这个方法被调用。
this.getJspContext().getOut().write(string);
c)给标签类添加相应的属性,并添加getter/setter方法。类中的这些属性对应标签上的属性名。
package com.model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* ClassName PrintfDate
* Description
*
* @author 石都林
* @date 2021/6/13 9:56
* Version 1.0
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PrintfDate extends SimpleTagSupport {
private Date date = new Date();
private String pattern = "yyyy-mm-dd";
private static SimpleDateFormat sdf = new SimpleDateFormat();
@Override
public void doTag() throws JspException, IOException {
sdf.applyPattern(pattern);
String s = sdf.format(date);
this.getJspContext().getOut().print(s);
}
}
d)编写一个*.tld文件(标签库描述文件),通过这个文件说明标签如何使用,包括标签由哪个类实现。最后将*.tld文件放入%WEB-ROOT%/WEB-INF/*.tld。
request.setAttribute(“date”, new Date());
<x:printDate date=”${date}” pattern=”yyyy-MM-dd” />
<?xml version="1.0" encoding="UTF-8" ?>
<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">
<description>lq 1.2 core library</description>
<display-name>lq core</display-name>
<tlib-version>1.2</tlib-version>
<short-name>lq</short-name>
<uri>http://www.lanqiao/tags/core</uri>
<tag>
<description>
自定义标签库
</description>
<name>printDate</name>
<tag-class>com.model.PrintfDate</tag-class>
<body-content>empty</body-content>
<attribute>
<description>
日期
</description>
<!-- 属性名 -->
<name>date</name>
<!-- 属性是否必须 -->
<required>false</required>
<!-- 是否可以使用el取值 -->
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<description>
日期格式
</description>
<name>pattern</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
e)将*.tld放入项目的WEB-INF目录中。
f)在jsp中使用<%@ taglib prefix=”Short-Name” uri=”uri”%>指令引入标签库才能使用。
使用
<%@ page import="java.util.Date" %><%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2021/6/13
Time: 9:54
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="lq" uri="http://www.lanqiao/tags/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<%
pageContext.setAttribute("myDate", new Date());
%>
<body>
<h1><lq:printDate/></h1>
<h1><lq:printDate date="${myDate}"/></h1>
<h1><lq:printDate pattern="yyyy年MM月dd日"/></h1>
<h1><lq:printDate date="${myDate}" pattern="yyyy年MM月dd日"/></h1>
</body>
</html>