JSP自定义标签
标签库是按照功能或实现进行分组的自定义标签的集合。
优点:
取代了JSP中的Java程序,并且可以重复使用,方便不熟悉Java编程的网页设计人员。
开发流程:
(1) 编写JSP,在JSP中使用自定义标签。
(2) 在web.xml中指定JSP中使用的标签的.tld(标签库描述文件)文件的位置。
(3) .tld文件中指定标签使用的类。
自定义标签的分类:
(1) 简单标签:如< mytag:helloworld/>
(2) 带属性标签:如<imytag:checkinput dbname = “<myBean.getDBName()>”/>
(3) 带标签体的标签:
在自定义标签的起始和结束标签之间的部分为标签体(Body)。Body的内容可以是JSP中的标准标签,也可以是HTML、脚本语言或其他的自定义标签。
<mytag:checkinput dbname = “<myBean.getDBName()>”>
<mytag:log message=”Table Name”>
<mytag:checkinput />
(4) 可以被Script使用的标签:
定义了id和type属性的标签可以被标签后面的Scriptlet使用。
<mytag:connection id = “oraDB” type = “DataSource” name = “Oracle”>
<%oraDB.getConnection(); %>
标签库包括如下组件:
1 标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。
2 标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎提供有关自定义标签的标签处理程序的信息。
3 应用程序部署描述符:提供与特定标签的标签库描述符相关的信息。它还描述使用的是哪一个标签库文件。Web.xml加入如下代码:但MyEclipse里加不进。
一个示例TLD文件如下:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>Application Tag Library</shortname>
<uri>http://jakarta.apache.org/taglibs/struts-example-1.0</uri>
<info>tag loop</info>
<tag>
<name>loop</name>
<tagclass>test.jsp.tags.BodyTagExample</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>counts</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
tag中的name属性:定义了我们的tag名称,在后面会用到。
tag中的tagclass属性:指定了我们这个tag的实现类。
tage中的bodycontent属性:指定我们的页面内容是什么性质的。(注意:在jsp开发中这里必须写JSP)
tage中的attribute属性:定义了我们的这个tag可能有的属性。
attribute中的name属性:指定了属性的名称。它和我们类中定义的“int counts;”必须一样,并且在类中还必须包含一个setCounts(int counts)方法,否则这个属性就不能设置。
attribute中的required属性:表示这个属性是否是必须的。
attribute中的rtexprvalue属性:表示这个属性是否可以用JSP的程序段的结果输出。
<taglib>
<taglib-uri>demotag</taglib-uri>
<taglib-location>/WEB-INF/tld/mytag.tld</taglib-location>
</taglib>