1.定义标签类。
标签扩展 BodyTagSupport 类。

package testtag;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.TagSupport;
public class LinkTag extends BodyTagSupport {
public LinkTag() {
// TODO Auto-generated constructor stub
}
private String href="";
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public int doStartTag() throws JspTagException {
return EVAL_BODY_BUFFERED;
}
public int doEndTag() throws JspTagException {
String body = this.getBodyContent().getString();
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
try {
JspWriter writer= pageContext.getOut();
String str="<a href='"+this.href+"'>"+body+"</a>";
pageContext.getOut().print(str);
}
catch (IOException e) {
throw new JspTagException(e.getMessage());
}
return SKIP_BODY;
}
}
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.TagSupport;
public class LinkTag extends BodyTagSupport {
public LinkTag() {
// TODO Auto-generated constructor stub
}
private String href="";
public String getHref() {
return href;
}
public void setHref(String href) {
this.href = href;
}
public int doStartTag() throws JspTagException {
return EVAL_BODY_BUFFERED;
}
public int doEndTag() throws JspTagException {
String body = this.getBodyContent().getString();
HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
try {
JspWriter writer= pageContext.getOut();
String str="<a href='"+this.href+"'>"+body+"</a>";
pageContext.getOut().print(str);
}
catch (IOException e) {
throw new JspTagException(e.getMessage());
}
return SKIP_BODY;
}
}
2.定义标签文件 MyTagLib.tld。

<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<tag>
<name>linktag</name>
<tag-class>testtag.LinkTag</tag-class>
<body-content>jsp</body-content>
<attribute>
<name>href</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<tag>
<name>linktag</name>
<tag-class>testtag.LinkTag</tag-class>
<body-content>jsp</body-content>
<attribute>
<name>href</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
3.在web.xml中添加引用。
<jsp-config>
<taglib>
<taglib-uri>MyTagLib</taglib-uri>
<taglib-location>/WEB-INF/MyTagLib.tld</taglib-location>
</taglib>
</jsp-config>
<taglib>
<taglib-uri>MyTagLib</taglib-uri>
<taglib-location>/WEB-INF/MyTagLib.tld</taglib-location>
</taglib>
</jsp-config>
4.在页面中调用自定义标签。
<%@taglib uri="MyTagLib" prefix="mytag"%>
<mytag:linktag href="http://www.baidu.com">测试标签</mytag:linktag>
<mytag:linktag href="http://www.baidu.com">测试标签</mytag:linktag>
分类:
java
标签:
java 自定义标签
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人