[JSP]自定义标签库taglib

[JSP]自定义标签库taglib

2023年7月29日发(作者:)

[JSP]⾃定义标签库taglib⾃定义标签的步骤⼤概有三步:1.继承.*下提供的⼏个标签类,如Tag、TagSupport、BodyTagSupport、SimpleTagSupport(JSP2.0)。2.在tld⽂件中配置标签库信息,以及标签与实现类的映射。3.在jsp⽂件中引⽤⾃定义标签。

标签APITag接⼝doEndTag():执⾏当前标签实例的结束标签。在doStartTag()执⾏后调⽤doStartTag():执⾏当前标签实例的开始标签。getParent():获取当前标签的⽗标签release():释放当前标签的状态setPageContext(PageContext):设置当前标签的页⾯setParent(Tag):设置当前标签的⽗标签

TagSupport类TagSupport类是实现Tag接⼝的⼀个模板类。它实现了Tag接⼝的⼤部分⽅法,⽤户只需要实现doStartTag()和doEndTag()⽅法。

SimpleTag接⼝(JSP2.0)JSP2.0的接⼝,⽐Tag接⼝更简单。doTag():执⾏当前标签的所有处理任务。getParent():获取当前标签的⽗标签。setJspBody():提供当前标签的实体为⼀个JspFragment对象setJspContext(JspContext):设置JSP页⾯的setParent(JspTag):设置当前标签的⽗标签。SimpleTagSupport类(JSP2.0)SimpleTagSupport类是实现SimpleTag接⼝的⼀个模板类。它实现了SimpleTag接⼝的⼤部分⽅法,⽤户只需要实现doTag()⽅法。tld标签库描述⽂件tld全称为Tag Library Description,即标签库描述⽂件。tld⽂件⽤来配置标签库的基本信息。

taglib主要元素 1.0 2.0 taglib Private Taglib copyright ght JSP Copyright tag. 指明推荐使⽤的prefix。l

uri指明引⽤这个标签库时使⽤的uri。l

tag指明要定义标签的信息。其中,tag可以设置的属性如下:属性nametagclassrequiredrtexprvaluetypedescriptionfragment描述定义属性的名称。每个标签的是属性名称必须是唯⼀的。指定映射的Java类。指定属性是否是必须的或者可选的,如果设置为false为可选。声明在运⾏表达式时,标签属性是否有效。定义该属性的Java类类型 。默认指定为String。描述信息。如果声明了该属性,属性值将被视为⼀个JspFragment。指明标签体的限制,有3种取值:empty、JSP和tagdependentempty:不允许有标签体存在。JSP:允许有标签体存在。tagdependent:允许有标签体存在,但是标签体内的JSP代码不会被执⾏。bodycontent

如果tld⽂件位于/WEB-INF/下⾯,Tomcat会⾃动加载tld⽂件中的标签库。如果位于其他的位置,可以在中配置。 /WEB-INF/ 或者在JSP中直接使⽤<%@ taglib uri="/WEB-INF/" prefix="taglib"%>

实例使⽤TagSupport⾃定义标签1.

继承标签API定义⼀个HelloTag类,继承TagSupport类。:package ;

import eption;import port;

public class HelloTag extends TagSupport { private static final long serialVersionUID = -88285956L; private String name;

@Override public int doEndTag() throws JspException { try { ().println("Hello, " + name); } catch (Exception e) { throw new JspException(e); }

return EVAL_PAGE; }

public String getName() { return name; }

public void setName(String name) { = name; }}

2.

在tld中配置标签库信息在/WEB-INF下新建⽂件。指明推荐使⽤的prefix为taglib。定义要引⽤的标签信息。指明标签名,指明映射的Java类,和前⾯的对应。然后定义这个标签的属性。因为前⾯Java类中的属性为name,这⾥也要对应上。: 1.0 2.0 taglib Private Taglib hello ag empty Hello tag with parameters. name true true

3.

在jsp⽂件中引⽤标签前⾯在tld⽂件中配置了各个关键信息,现在就可以直接在jsp⽂件中使⽤了。⾸先,需要在jsp⽂件中引⼊标签库⽂件。这⾥和标准标签库JSTL⼀样,使⽤taglib关键字来说明要引⼊的是标签库。uri是引⼊地址,prefix是标签库关键字。<%@ taglib uri="/taglib"prefix="taglib"%>由于前⾯定义的标签name为hello,所以可以使⽤的标签名为:prefix+name,即:taglib:hello。:<%@ page language="java"contentType="text/html; charset=UTF-8"%><%@ taglib uri="/taglib"prefix="taglib"%>Insert title here
结果:

使⽤SimpleTagSupport⾃定义标签(JSP2.0)1.

继承标签API定义⼀个HelloTag类,继承SimpleTagSupport类。:package 2;

import ption;

import eption;import TagSupport;

public class PersonTag extends SimpleTagSupport { private String name; private String sex; private int age;

@Override public void doTag() throws JspException, IOException { Context().getOut().write( "[Person Info]name: " + name + ", sex: " + sex + ", age:" + age); } public String getName() { return name; } public void setName(String name) { = name; } public String getSex() { return sex; } public void setSex(String sex) { = sex; } public int getAge() { return age; } public void setAge(int age) { = age; }}

2.在tld中配置标签库信息在/WEB-INF下新建⽂件。关键配置信息基本和使⽤TagSupport⾃定义标签范例中⼀样。但是由于对应Java类中有3个属性,需要⼀⼀对应上。: 1.0 2.0 taglib Private Taglib person Tag empty person info tag name true true sex true true age true true

3.在jsp⽂件中引⽤标签引⽤标签⽅式和使⽤TagSupport⾃定义标签范例⼀样。:<%@ page language="java"contentType="text/html; charset=UTF-8"%><%@ taglib uri="/taglib"prefix="taglib"%>Insert title here结果:

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690579453a372568.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信