zoukankan      html  css  js  c++  java
  • 定制标记---简单标记处理器

      标记文件利用另一个页面(使用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中的配置:

  • 相关阅读:
    changing a pointer rather than erasing memory cells
    验证码识别 edge enhancement 轮廓增强 region finding 区域查找
    Manipulating Data Structures
    passing parameters by value is inefficient when the parameters represent large blocks of data
    Aliasing 走样
    Artificial Intelligence Research Methodologies 人工智能研究方法
    Thread safety
    include pointers as a primitive data type
    flat file
    functional cohesion
  • 原文地址:https://www.cnblogs.com/juaner767/p/5509457.html
Copyright © 2011-2022 走看看