在JSP开发中会遇到一些重复的工作。而使用自定义标签库是一种方法,可以用来将这些功能封装起来并在多个项目中重新用到它。此外,应用逻辑还可以包含在基于服务器的资源中,比如JavaBeans。这种架构显示出使用自定义标签库可以更快更容易地开发基于Web的应用程序。
有关JavaBeans和自定义标签库的最初想法是:在程序员研究那些包含商务逻辑(business logic)的类的同时,Web设计师可以同步进行页面设计。然后,Web设计师可以通过使用简单的“连线”将JSP页面和这些类联系起来。尽管使用JavaBean会减少在JSP页面中写代码的数量,但你还是得写程序去使用这些Beans。
然而使用自定义标签库则是一种完全无需在JSP中写代码的好办法。这并不是说自定义标签库会取代JavaBeans,它们都是用来分离实际内容和显示形式的。JavaBeans在用于商务逻辑被重用的设计中作用更为明显。JavaBeans通常能在不同项目的各种页面中被用到。另一方面,自定义标签库则是一个特殊页面的自定义形式,即便如此,将它重新利用到其他程序中也是很常见的。得到自定义标签库的一种方法是自己建一个。但为什么不使用现成的呢?比如Jakarta Taglibs项目(源自Apache Software Foundation)就提供了一些自定义标签库,它们可以在不同的JSP应用程序中重复使用。
Struts框架提供了一系列的框架组件,同时,他也提供了一系列的标签(Tag)用于和框架进行交互。Struts提供的标签包含在以下四个标签库(Tag libraries)中:
· HTML
· Bean
· Logic
· Template
这四个标签库所包含的标签功能各自截然不同,从标签库的名字我们可以看出其功能,如,HTML标签库是用来包装HTML控件的。
和使用其它标签库一样,使用Struts提供的标签库只需要简单的两步:
1、 在web.xml中声明标签库:
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
2、 在JSP页面中引入标签库:
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
HTML标签库中的标签列表 |
标签名 |
描述 |
base |
包装HTML的base元素 |
button |
包装HTML的 button类型的input元素 |
cancel |
包装HTML cancel 按钮 |
checkbox |
包装HTML checkbox 类型的输入域 |
errors |
有条件地显示一些error消息,显示ActionErrors信息 |
file |
包装HTML文件上传输入域 |
form |
定义HTML form 元素 |
frame |
包装HTML frame 元素 |
hidden |
包装HTML hidden 输入域 |
html |
包装 HTML中的 html 元素 |
image |
包装 "image"类型的输入域 |
img |
包装HTML的 img 元素 |
javascript |
包装根据ValidatorPlugIn提供的校验规则所提供的javascript校验脚本 |
link |
包装超链接 |
messages |
有条件地显示一些提示信息,显示ActionMessages信息 |
multibox |
包装多选输入框 |
option |
包装一个选择输入框 |
options |
包装一批选择输入框 |
optionsCollection |
包装一批选择输入框集 |
password |
包装密文输入框 |
radio |
包装单选输入框 |
reset |
包装“重置”功能的按钮 |
rewrite |
包装一个URL |
select |
包装一个选择输入框 |
submit |
包装一个提交按钮 |
text |
包装一个文本输入框 |
textarea |
包装一个备注输入框 |
在这里,不打算对每一个标签的使用进行详细说明,要想了解每一个标签的使用,请查看Struts官方文档。
接下来,我们着重学习一下几个非常重要的标签的使用,举一反三,通过这几个标签的使用,我想,即使不去看官方文档,也能够对其它标签的使用有个基本的了解。 
|