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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值