自定义标签配置详解

来源:互联网 发布:windows live安装包 编辑:程序博客网 时间:2024/05/29 14:46
自定义标签配置详解


以一个经典例子来说明:
用1.0的自定义标签语法开发(2.0也行)


案例:开发一个显示公司版权信息的标签


效果:在Jsp中执行<my:CopyRight></my:CopyRight>,将会在页面上输出公司


版权信息


开发步骤:(以上面的例子为准)


1.编写标签处理类(要求实现Tag接口)


结果枚举值的说明:


SKIP_BODY     跳过了开始和结束标签之间的代码


EVAL_BODY_INCLUDE  将body的内容输出到存在的输出流中(暂时用不到)


SKIP_PAGE      忽略剩下的页面


EVAL_PAGE    继续执行下面的页面


这里给出具体例子实现Tag接口的代码:
CopyRight.java代码:






package javastudy;


import java.io.IOException;


import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.Tag;


public class CopyRight implements Tag {
///通过实现Tag接口
    PageContext pagecontext;
@Override
public int doEndTag() throws JspException {
        JspWriter out = pagecontext.getOut();///通过pagecontext


(pagecontext可以获得其他八大jsp内置对象)来获得out对象
   try {
out.println("小欢科技有限公司!2017-未来  版


权所有!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        return Tag.EVAL_PAGE; ///意思就是继续执行后面的页面
}


@Override
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
return Tag.SKIP_BODY;
}


@Override
public Tag getParent() {
// TODO Auto-generated method stub
return null;
}


@Override
public void release() {
// TODO Auto-generated method stub


}


@Override
public void setPageContext(PageContext arg0) {
// TODO Auto-generated method stub
        pagecontext = arg0;//将网页上的PageContext注入到这个类中,以


此来调用包括PageContex在内的jsp九大内置对象
   //这里声明的pagecontex是用来接收网页上的PageContext,注入


这个功能由系统来完成!
}


@Override
public void setParent(Tag arg0) {
// TODO Auto-generated method stub


}


}


提示:注意 doStartTag() 和doEndTag()这里面的代码,我都写的有注释!




2.添加tld文件
tld=tag library discription=标签库描述
tld文件请置于web-inf目录之下,文件名没有要求
3.引入tld文件,uri可以自己输入,prefix可以随便输入
4.新建一个jsp文件,使用标签即可!
web-inf下面的myfile.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">(这里如果


是2.0版本的话就需要改)


web-inf下面的myfile.tld文件
<taglib>
<tlibversion>0.1</tlibversion>
<jspversion>1.1</jspversion>
<shortname>myTaglib</shortname>
<uri>http://www.baidu.com/tag</uri>(这里重点)
<info>my all tags</info>
<tag>
<name>CopyRight</name>
<tagclass>javastudy.CopyRight</tagclass>(这里重点)
<info>display copyright</info>
</tag>
</taglib>
里面具体的标签的含义在网上都可以查到,我就不一一解释!


3.这里是jsp文件(来使用标签,只写出部分)
<body>
<my:CopyRight>Hello</my:CopyRight>
</body>
加上hello,如果要显示出来的话,那么就要看CopyRight里面doStartTag() 


里面的return的返回值,上面的返回值都有枚举,这个例子中是打印不出的


hello的,因为是SKIP_BODY!


最后显示的字体就是:小欢科技有限公司!2017-未来 版权所有!




自定义标签可以大大提高公司的开发效率,框架师一般会开发一些自定义标签!