1.需求
在jsp页面展示当前时间。
2.编写自定义标签类 showTime.java
package com.zy.tag; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext;import javax.servlet.jsp.tagext.SimpleTagSupport; public class JspTag extends SimpleTagSupport{ //标签属性 private String now; public String getNow() { return now; } public void setNow(String now) { this.now = now; } @Override public void doTag() throws JspException, IOException { if(now.equals("当前时间")){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String d = sdf.format(date); PageContext context = (PageContext) this.getJspContext(); JspWriter out = context.getOut(); out.write(d); out.flush(); } super.doTag(); } }
3.创建showTime.tld文件
3.1.先在pom.xml中引入jsp-api.jar
<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> <scope>provided</scope> </dependency>
3.2.在WEB-INF目录下创建showTime.tld文件
右键点击WEB-INF-->选择New-->选择Other--搜索xml-->点击XML File -->next-->在File name输入框出输入:showTime.tld-->next-->选择Create XML file form a DTD file选项-->next-->选择Select XML Catalog entry选项-->选择
-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2 //EN选项-->next-->finish
创建后,showTime.tld文件初始状态如下所示:
3.3.showTim.tld文件编写,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd" > <taglib> <!-- 自定义标签的版本数 --> <tlib-version>1.0</tlib-version> <!-- 标签库依赖的JSP版本 --> <jsp-version>1.0</jsp-version> <!-- 标签库的简写 --> <short-name>showTime</short-name> <!-- 指定这个标签库的uri信息 --> <uri>http://www.zy.tag</uri> <!-- 标签集 --> <tag> <!-- 标签名字 --> <name>name</name> <!-- 指定标签的类 --> <tag-class>tag-class</tag-class> <!-- empt:表示没有标签体 JSP:表示标签体可以包含JSP代码 scriptless:表示标签体可以包含EL表达式和JSP动作元素,但不能包含JSP的脚本元素 tagdependent:表示标签体交由标签本身去解析处理。即在标签体中所写的任何代码都会原封不动地传给标签处理器--> <body-content>scriptless</body-content> <attribute> <!-- 标签属性名称 --> <name>now</name> <!-- 这个属性是否必填 --> <required>true</required> <!-- 这个属性是否el表达式--> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
3.4.在jsp页面中使用
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib uri="http://www.zy.tag" prefix="timeTag" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>首页</title> </head> <body background="../img/body-bg.png"> <hr/> <timeTag:showTime now="当前时间"> </timeTag:showTime> </body> </html>
3.5.效果如下图所示: