JSP入门
发布日期:2022-02-07 06:39:38 浏览次数:12 分类:技术文章

本文共 2944 字,大约阅读时间需要 9 分钟。

  标签(JSP Tag Library)技术是在JSP1.1版本中才出现的,它支持用户在JSP文件中使用自定义的标签。通过JSP标签可以进一步使代码更简洁,逐渐把需要使用Java类才能处理的逻辑分离出来,放到JSP标签中,这样也可以进一步提高代码的复用程度。

  要自定义JSP标签要涉及到标签的处理类、标签的描述文件以及如何引用标签等几个方面的内容。

  一、标签的处理过程

  容 器解析JSP页面时,如果发现自定义标签,则会在JSP中寻找该标签引用的URI:例如JSP文件头部的引用<%@ taglib uri="/hellokitty.tld" prefix="dada"%>,此时它会找到该标签的uri ,uri 的属性“/hellokitty.tld”在web.xml中已经定义了,例如:

 <taglib>

7n }p;z5?JGB2Ul.]%y0    <taglib-uri>/ hellokitty.tld</taglib-uri>ITPUB个人空间q!b^9~&JG v~ Z
    <taglib-location>/WEB-INF/ hellokitty.tld</taglib-location>ITPUB个人空间!H&t!A(tca/F
  </taglib>

  此时WEB容器会通过uri在web.xml中查找到该标签的描述文件tld,例如“/WEB-INF/ hellokitty.tld”。而在tld描述文件中又定义了该标签的处理类,例如hellokitty.tld中有如下定义:

    <tag>ITPUB个人空间Uf-lX)|.^E

      <name>sayHello</name>
!u9@0|,A#DA0      <tag-class>com.free.taglib.HelloKittyTag</tag-class>ITPUB个人空间d bBMK
      <body-content>empty</body-content>
T:a.J!WWR;J/UW0    </tag>

  要创建自定义的标签,可分为如下几步:

  1. 创建标签描述文件。

  在WEB-INF下新建一个tld文件,该文件描述了此tld文件将由哪些标签处理类完成操作,并且定义了该标签的属性。

  2. 创建标签处理类。

  标签处理类继承于TagSupport类或TagSupport类的子类,可覆盖处理标签的方法,例如doEndTag()方法,实现自定义标签。

  3. 修改web.xml文件。

  在web.xml中下添加节点,将标签的uri与具体标签描述文件绑定,例如:

<taglib>ITPUB个人空间X(`%w Yk8Vu-kYf Zv

    <taglib-uri>/ hellokitty.tld</taglib-uri>
!p!U:DqD)Z!H0    <taglib-location>/WEB-INF/ hellokitty.tld</taglib-location>
+Y$Ae i"A0</taglib>

  4、在JSP页面中使用标签

   首先在页面中导入标签,例如<%@ taglib uri="/ hellokitty.tld" prefix="dada"%>表示标签前缀为“dada”的标签将调用uri指定的标签,uri可以随便起名字,但一定要和web.xml中定义 的uri相对应。导入标签后就可以在JSP页面中直接使用标签,例如:

  <dada:title begin="" end="footer"/>。

  二、标签的描述文件

  标签的描述文件是一个描述整个标签库标记信息和标签库中每个标签处理器以及其属性的XML文档。可以包含如下的一些元素。

  1. tlibversion:标签库版本号,是一个点式十进制数(例如1.0),最多为4组小数点分隔的数字组成。

  2. jspversion:标签库所需的JSP规范最低版本,例如JSP1.1。

  3. shortname:标签库的缩写名,JSP可以使用该名字作为库中标签的缺省前缀。

  4. uri:标签库唯一URI的元素。

  5. info:标签库描述信息。

  6. tag:加入标签,描述组成库的每个标签。

  在tag元素中包含标签及其属性的信息:

  1. name:与标签库的名字前缀一起使用的标签的名字, 是JSP容器唯一的标签标识。

  2. tagclass:实现标签的标签处理器类的全名。

  3. teiclass:标签附加信息(TEI)类的全名,TEI类给出关于标签处理器创建变量及有效性验证的信息。

  4. bodycontent:描述标签处理器如何使用标签体的内容,有三种取值:

  l empty:表示标签体必须为空;

  l JSP:表示脚本元素和模板及其它标签一样被评估。

  l tagdependent:内容被原封不动写入BodyContent,其它脚本元素以源码形式出现,而不被JSP容器解释。

  5. info:标签的描述性信息。

  6. attribute:使用标签时被编码的属性信息,用于定义标签的属性。

  “attribute”元素中又可以包含下面几个元素:

  1. name:属性的名字。

  2. required:属性是否必须。

  3. rtexprvalue:属性值能否用表达式指定。

  标签描述文件中tag和attribute是可以有子元素的,例如:

<taglib>ITPUB个人空间-G#`�ODq7nF{]}

    <tlibversion>1.0</tlibversion>ITPUB个人空间?_ ^rm?.{
    <jspversion>1.2</jspversion>ITPUB个人空间,u${;z[e#@7y
    <shortname>message</shortname>
S$oO_#nQ7q0    <uri>http://www.free.com/taglibs/HelloKitty</uri>
O,Bn7F�z-S0@:R0        ITPUB个人空间GKh/d*PjNb
    <tag>
8xmN8h Ii0      <name>sayHello</name>ITPUB个人空间s6j2Wl0zw
      <tagclass>com.free.taglib.HelloKittyTag</tagclass>
A TJs%E&/pL{.[$^0      <bodycontent>empty</bodycontent>
)d D#?)}9w0      <attribute>
(Y!o5uX ]sm0B"AY0        <name>key</name>ITPUB个人空间#k0W'g3Mh _m J
        <retuired>true</retuired>
6@!Q.Q_:}q3W0      </attribute>
X n MF d'Y-u _z0    </tag>
rlP0m Lo!m s0</taglib>

  如果要在JSP页面中实现JSP标签,必须首先定义实现标签的类,然后在标签库描述文件(TLD)中将写好的类映射成JSP标签,最后在JSP文件中使用定义好的标签,就可以生成动态的JSP内容。

转载地址:https://blog.csdn.net/wyfeizj/article/details/3969096 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:How a C++ compiler implements exception handlin
下一篇:TCP 连接断连问题剖析

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年03月28日 09时10分05秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

云栖社区 mysql_【直播结束,已更新回放】PG、MySQL到底哪个好?云栖说这次请来五位专家撕了一下-阿里云开发者社区... 2019-04-21
老男孩mysql 百度云_英语语录:除了你,没人能掌控你的幸福 2019-04-21
mysql驱动多次执行问题_Laravel5.2队列驱动expire参数设置带来的重复执行问题 数据库驱动... 2019-04-21
mysql获取刚新增的数据库_如何取得刚插入数据库的数据的id mysql 2019-04-21
python将10到1递减_(Python)如何将3个递减列表合并成一个递减列表? 2019-04-21
python脚本怎么用来处理数据_长时间运行数据处理python脚本的程序结构 2019-04-21
python转成c 语言_将Python对象转换为C void类型 2019-04-21
resin mysql_Eclipse+resin+mysql 安装及环境配置 2019-04-21
redis的使用 Java_java中使用redis 2019-04-21
java 数组元素位置_Java – 在数组中获取元素位置 2019-04-21
c 泛型与java泛型_C ++和Java中的“泛型”类型之间有什么区别? 2019-04-21
java 返回实体对象_java 封装返回结果实体类 返回结果以及错误信息 2019-04-21
java web 防止sql注入攻击_JavaWeb防注入知识点(一) 2021-06-24
java ssm 异常分类_SSM项目常见的异常与处理提示(一) 2021-06-24
java定义矩形类_Java定义矩形类 2021-06-24
java变量怎么变常量_Java的常量与变量是什么?怎么学习呀? 2021-06-24
java开发招聘试题_客户化开发招聘试题-Java开发.doc 2021-06-24
java jdk win10 1335_win10下安装java jdk,tomcat 2021-06-24
java list二分查找_java中的ArrayList和LinkedList的二分查找速度比 | 学步园 2021-06-24
php中的变量名称用什么表示,PHP变量,方法,类等名称中的有效字符是什么? 2021-06-24