JSP自定义标签库

李送球2010-03-28
步骤如下
1. 扩张TagSupport
package com.meliora.mytag.tag;

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class MyTag extends TagSupport {
private static final long serialVersionUID = 1L;
boolean flag;
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public int doEndTag() throws JspException {
          /*
            *  Tag.EVAL_PAGE         执行后面的页面内容
            *  Tag.SKIP_PAGE         不执行后面的页面内容 
*/
System.out.println("doEndTag");
try {
if (bodyContent != null) {
bodyContent.writeOut(bodyContent.getEnclosingWriter());
} else {
}
} catch (IOException e) {
throw new JspTagException("IO ERROR:" + e.getMessage());
}
return EVAL_PAGE;
}
@Override
public int doStartTag() throws JspException {
   /*
    *  Tag.EVAL_BODY_INCLUDE 包含主体内容
            *  Tag.SKIP_BODY         不包含主体内容
            */
JspWriter out=pageContext.getOut(); 
if (flag) {
try {
out.print("Myjsp  Tag!");
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_BODY_INCLUDE;
} else {
return SKIP_BODY;
}
}
@Override
public int doAfterBody() throws JspException {
// TODO Auto-generated method stub
return super.doAfterBody();
}
@Override
public void doInitBody() throws JspException {
super.doInitBody();
}
@Override
public BodyContent getBodyContent() {
return super.getBodyContent();
}
@Override
public JspWriter getPreviousOut() {
return super.getPreviousOut();
}
@Override
public void release() {
super.release();
}
@Override
public void setBodyContent(BodyContent b) {
this.bodyContent = b;
}
}
2. 写自定义Tag的tld文件
标签库元素<taglib>属性:表格如下
        
<taglib>属性表格</taglib>
属性 描述
tlib-version 本标签库实现版本
jsp-version 标签库依赖的JSP版本
short-name 被JSP创作工具使用的一个短的默认名词
uri 指定这个标签库的uri信息
display-name 被工具使用的显示用的名字
small-icon 被工具使用的小图标
large-icon 被工具使用的大图标
description 本标签的描述
validator TLD验证信息
listener 实践监听器规范
        tag标签相关属性:
tag标签相关属性表
属性 描述
name tag标签唯一的名称
tag-class tag标签的处理类
tei-class tag标签的TagExtraInfo类
body-content 标签主体的内容
display-name 显示的名称
small-icon 被工具使用的小图标
large-icon 被工具使用的大图标
description 本标签的描述
variable 脚本变量的信息
attribute 标签属性的信息
3. web.xml中指定你的tld文件
<jsp-config>
<taglib>
<taglib-uri>/MyTag</taglib-uri>
<taglib-location>/WEB-INF/MyTag.tld</taglib-location>
</taglib>
</jsp-config>
4. 在JSP页面使用自定义标签
<%@ taglib prefix="t" uri="/MyTag" %>
<body>
  <t:flag flag="true"></t:flag>
  </body>

你可能感兴趣的:(jsp,Web,xml,servlet,脚本)