一、 http://janwer.iteye.com/blog/150217/

介绍<jsp-config>,<jsp-config> 包括 <taglib> 和 <jsp-property-group> 两个子元素。其中<taglib> 元素在JSP 1.2 时就已经存在;而<jsp-property-group> 是JSP 2.0 新增的元素。

着重介绍<jsp-property-group>

 

 

 

二、http://huangjiajian01.blog.163.com/blog/static/1653898542011021111519305/

介绍<taglib>在使用时的两种方式

自定义标签在jsp中应用是需要声明标签库,有下面两种方式:

1、直接指定路径
        <%@ taglib prefix="mytag" uri="/WEB-INF/testcomp.tld" %>

2、间接引用
        <%@ taglib prefix="tt" uri="http://testcomp.com/testcomp/core" %>
        这样做需要在web.xml中增加下面的内容:
       <jsp-config>
            <taglib>
                   <taglib-uri>http://testcomp.com/testcomp/core</taglib-uri>
                   <taglib-location>/WEB-INF/testcomp.tld</taglib-location>  
            </taglib>
       </jsp-config>

很明显,间接的方式更加灵活,当.tld文件改变存放位置时只需要修改web.xml,而不用去修改每个jsp页面。

 

三、这个是我现在做的项目里一个tld文件的示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
    <tlibversion>1.0</tlibversion>
    <jspversion>1.1</jspversion>
    <shortname>bean</shortname>
    <uri>/WEB-INF/tld/sh.tld</uri>
    <tag>
        <name>helloworld</name>
        <tagclass>com.xie.common.tags.HelloWorldTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <attribute>
            <name></name>
            <required></required>
            <rtexprvalue></rtexprvalue>
        </attribute>
    </tag>
    
     <tag>
        <name>testRole</name>
        <tagclass>com.xie.common.tags.TestRoleTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <attribute>
            <name>role</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
    
     <tag>
        <name>formatDate</name>
        <tagclass>com.xie.common.tags.FormatDateTag</tagclass>
        <bodycontent>JSP</bodycontent>
        <attribute>
            <name>value</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>pattern</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>

以及java文件

package com.xie.common.tags;

import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class FormatDateTag extends TagSupport {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    private long value;

    private String pattern;

    public long getValue() {
        return value;
    }

    public void setValue(long value) {
        this.value = value;
    }

    public String getPattern() {
        return pattern;
    }

    public void setPattern(String pattern) {
        this.pattern = pattern;
    }

    @Override
    public int doStartTag() throws JspException {
        try {
            Date date = new Date();
            date.setTime(value);
            SimpleDateFormat sdf = new SimpleDateFormat(pattern);
            String dateStr = sdf.format(date);
            JspWriter out = this.pageContext.getOut();
            out.print(dateStr);
        }catch(Exception e) {
            throw new JspException(e.getMessage());
        }
        return SKIP_BODY;
        
    }
    
    @Override

    public int doEndTag() throws JspException {

        return EVAL_PAGE;

    }
}