1、编写一个实现Tag接口的java类
packageTagDemo;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.jsp.JspException;importjavax.servlet.jsp.JspWriter;importjavax.servlet.jsp.PageContext;importjavax.servlet.jsp.tagext.Tag;importjava.io.IOException;public class ViewIPTag implementsTag {privatePageContext pageContext;
@Overridepublic voidsetPageContext(PageContext pageContext) {this.pageContext =pageContext;
}
@Overridepublic voidsetParent(Tag tag) {
}
@OverridepublicTag getParent() {return null;
}
@Overridepublic int doStartTag() throwsJspException {
System.out.println("调用doStartTag方法");
HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();
JspWriter writer=pageContext.getOut();
String ip=request.getRemoteAddr();try{
writer.write(ip);
}catch(IOException e) {
e.printStackTrace();
}return 0;
}
@Overridepublic int doEndTag() throwsJspException {
System.out.println("调用doEndTag方法");return 0;
}
@Overridepublic voidrelease() {
System.out.println("调用release方法");
}
}
ViewIPTag
2、编写tld标签库文件,tld文件必须放在WEB-INF文件夹或其子文件夹下,此文件是用来对标签处理器类进行描述
自定义标签
1.0
SDT
/sefDefineTag
输出客户端地址
viewIPTag
TagDemo.ViewIPTag
empty
tld
taglib标签库标签简述
description:对标签库描述信息
tlib-version:标签库版本
short-name:标签库名称
uri:标签库唯一标识,jsp就是通过uri引用标签的,uri必须以/开头,后面随便写,只要名称唯一;如下面引用
tag:taglib标签库中可以包含多个自定义标签,每个tag对应一个自定义标签
description:对当前标签的描述
name:定义一个名称,Jsp中通过这个名称引用标签处理器类
tag-class:对应的标签处理器类
body-content:定义标签体操作方式,如empty,规定标签体内不能有内容,如有则抛异常;如JSP,则允许标签体内有内容;下一节结合标签控制器类方法返回值再介绍
3、在Jsp文件中测试
Jsp
Jsp中就可以引入标签库,使用prefix可以设置标签库别名,标签使用方式就是