JSP标签编程--简单标签

javax.servlet.jsp.tagext里的类SimpleTagSupport

使用SimpleTagSupport类一网打尽以往复杂的标签开发,直接使用doTag()方法

java文件:

package org.lxh.tagdemo ;
import java.io.* ;
import java.util.* ;
import java.text.* ;
import javax.servlet.jsp.* ;
import javax.servlet.jsp.tagext.* ;
public class SimpleDateTag extends SimpleTagSupport {
    private String format ;    // 接收格式化
    public void doTag()
           throws JspException,
                  IOException{
        SimpleDateFormat sdf = new SimpleDateFormat(this.format) ;
        try{
            super.getJspContext().getOut().write(sdf.format(new Date())) ;
        }catch(Exception e){}
    }
    public void setFormat(String format){
        this.format = format ;
    }
    public String getFormat(){
        return this.format ;
    }
}

  tlb文件:

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    <tlib-version>1.0</tlib-version>
    <short-name>mldntag</short-name>
   
    <tag>
    <name>simpledate</name>
    <tag-class>org.lxh.tagdemo.SimpleDateTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <name>format</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
    </tag>
</taglib>

web.xml文件:

<jsp-config>
        <taglib>
            <taglib-uri>mldn</taglib-uri>
            <taglib-location>/WEB-INF/mldntag.tld</taglib-location>
        </taglib>
    </jsp-config>

 

jsp文件:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib prefix="mytag" uri="mldn"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
    <h1>
        <mytag:simpledate format="yyyy-MM-dd HH:mm:ss.SSS"/>
    </h1>
</body>
</html>

 

 定义有属性的标签:

java 文件:format作为属性

package org.lxh.tagdemo ;
import java.text.* ;
import java.util.* ;
import javax.servlet.jsp.* ;
import javax.servlet.jsp.tagext.* ;
public class DateTag extends TagSupport {
    private String format ;    // 当设置属性的时候可以通过setter完成
    public int doStartTag()
               throws JspException{
        SimpleDateFormat sdf = new SimpleDateFormat(this.format) ;
        // 表示进行格式化的日期显示操作
        try{
            super.pageContext.getOut().write(sdf.format(new Date())) ;
        }catch(Exception e){
            e.printStackTrace() ;    // 异常处理操作
        }
        return TagSupport.SKIP_BODY ;
    }
    public void setFormat(String format){
        this.format = format ;
    }
    public String getFormat(){
        return this.format ;
    }
}

tld文件,定义属性format:

<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_1.xsd"
    version="2.1">
    <tlib-version>1.0</tlib-version>
    <short-name>datetag</short-name>
    <tag>
    <name>date</name>
    <tag-class>org.lxh.tagdemo.DateTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
        <name>format</name>
        <required>true</required>
        <rtexprvalue>true</rtexprvalue>
    </attribute>
    </tag>
</taglib>

web.xml:

<jsp-config>
        <taglib>
            <taglib-uri>mldn_date</taglib-uri>
            <taglib-location>/WEB-INF/datetag.tld</taglib-location>
        </taglib>
    </jsp-config>

JSP调用文件,format的setter通过反射机制完成:

<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ taglib prefix="mytag" uri="mldn_date"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
    <h1><mytag:date format="yyyy-MM-dd HH:mm:ss.SSS"/></h1>
</body>
</html>

 

posted @ 2015-12-01 16:31  wujixing909  阅读(345)  评论(0编辑  收藏  举报