jsp简单自定义标签demo展示《二》

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.效果如下图所示:

  

  

原文地址:https://www.cnblogs.com/yixtx/p/8359831.html