自定义标签

来源:互联网 发布:win7无网络访问权限 编辑:程序博客网 时间:2024/06/05 07:58

JSTL语法使用时,需要导入jstl.1.2包,通过引用包中的标签实现具体的语法。可以仿照其中的标签自定义一些特殊功能的标签,例如定义输出系统时间的标签。

1、创建tld文件,文件名自己定义尽量简洁,文件以tld结尾,例如:k.tld

<?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>My tag library</description>  <display-name>My JSTL core</display-name>  <tlib-version>3.2</tlib-version>  <!--下面一项前缀和文件名相同,前面三项自己定义-->  <short-name>k</short-name>  <!--uri地址自己定义-->  <uri>/my-tag</uri>   <!--下面几项格式是套路,逐一填写-->   <tag>    <description>标签描述</description>    <name>sysdate</name>    <!--标签类,包名.类名-->    <tag-class>web.SysDateTag</tag-class>    <!--双标签中的内容,如果是单标签,则是empty-->    <body-content>empty</body-content>    <attribute>        <description>属性格式></description>        <name>format</name>        <!-- 是否必须输入 -->        <required>true</required>        <!-- 是否允许EL表达式输入 -->        <rtexprvalue>true</rtexprvalue>    </attribute>   </tag></taglib>

2、创建类

package web;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 SysDateTag extends SimpleTagSupport {    //给方法传入参数,该变量与标签里面的属性名一致    private String format;    public String getFormat() {        return format;    }    public void setFormat(String format) {        this.format = format;    }    @Override    public void doTag() throws JspException, IOException {        Date date=new Date();        SimpleDateFormat sdf=new SimpleDateFormat(format);        String time=sdf.format(date);//      输出时间,该方法声明返回值类型是JspContext,//      而实现方法时的实际类型是PageContext,PageContext extends JspContext        PageContext ctx=(PageContext)getJspContext();        JspWriter out=ctx.getOut();        out.println(time);//      此处不能关闭流,因为其他标签也要使用,Tomcat会自动关闭    }}

3、写jsp文件

<%@ page pageEncoding="utf-8" %><!--使用taglib指令,prefix是标签文件的前缀--><%@taglib uri="/my-tag" prefix="k" %><!doctype html><html><head>    <meta charset="utf-8">    <title>自定义标签输出当前时间</title></head><body>    <h1>自定义标签输出当前时间</h1>    <p>    <!--sysdate是自定义标签中的标签名-->        <k:sysdate format="yyyy-MM-dd HH:mm:ss"/>    </p></html>
原创粉丝点击