• 定制标记---简单标记处理器


      标记文件利用另一个页面(使用JSP)实现标记功能,标记处理器利用一个特殊的JAVA类实现标记功能。有两种类型的标记处理器:简单标记处理器和传统标记处理器。

    1.建立一个简单标记处理器

    1)开发定制标记处理器,扩展自SimpleTagSupport类

    2)为标记创建一个TLD(taglib description),放在WEB-INF中

    3)使用定制标记

    4)attribute中的<rtexprvalue>非常重要,它告诉你属性的值是在转换时计算,还是在运行时计算,<rtexprvalue>默认值为false,即属性值只接受一个String直接量。如果<rtexprvalue>值为true,则属性值可以接受三种表达式:

    5)只有当标记的<body-content>元素不是empty时,这个标记才能有体。<body-content>元素的取值可以如下:

    2.容器怎样找到TLD

      在JSP 2.0之前,开发人员必须为TLD中的<uri>与TLD文件的具体位置之间指定一个映射。

      在JSP 2.0中,不必指定映射,容器会自动建立TLD和<uri>名之间的映射。容器建立映射时,会首先在DD中查找,看是否已有<taglib>项,如果有,就用这些设置来建立映射,如果没有,容器会在4个位置查找TLD:

    1)直接在WEB-INF目录中查找;

    2)直接在WEB-INF的一个子目录中查找;

    3)在WEB-INF/lib下一个JAR文件中的META-INF目录中查找;

    4)在WEB-INF/lib下一个JAR文件中的META-INF的子目录中查找;

    3.简单标记API

    4.简单标记处理器的生命周期

      简单标记处理器不会被容器重用。每个标记处理器实例只负责一次调用。

    5.标记体中使用表达式

      假设有一个有体的标记,而且体中使用了一个属性的EL表达式。如果调用这个标记时该属性尚不存在,标记体要依赖标记处理器设置属性。

    6.有属性的简单标记

      如果一个标记需要一个属性,就要在TLD中声明,并在标记处理器中为每个属性提供一个bean式的设置方法。

    7.SkipPageException:停止处理页面

      如果使用标记的过程中出错,但是希望页面之前已经计算的部分还会作为响应出现,可以抛出SkipPageException。SkipPageException只停止直接调用标记的页面,不会影响它的外围页面。

    8.为定制标记增加可选属性

      如果要为定制标记增加可选属性,首先,标记处理器类必须实现JSP API的DynamicAttribute接口,这个接口必须实现setDynamicAttribute()方法。这个方法需要存储属性的键值对,存储这个信息最佳的数据结构是hashmap:

      使用可选属性:

      TLD中的配置:

  • 相关阅读:
    js yui
    ie tbody table 兼容方法
    js json ie不支持json
    js ie 6,7,8 使用不了 firstElementChild
    js for in
    js json 单双引号互换
    html table 上移下移
    js autoComplate
    开发总结
    CentOS6.7 下安装git
  • 原文地址:https://www.cnblogs.com/juaner767/p/5509457.html
Copyright © 2020-2023  润新知