zoukankan      html  css  js  c++  java
  • 《Head First Servlets & JSP》-10-定制标记开发

    标记文件:很想include,但是比include更好

    • 建立和使用标记文件的最简方法
    1. 取一个被包含文件(如Header.jsp),把它重命名为带有一个.tag扩展名(Header.tag);
    2. 把标记文件(Header.tag)放在WEB-INF目录下一个名为tags的目录中;
    3. 在JSP中放一个taglib指令(有一个tagdir属性),并调用这个标记;
    • 如何向标记文件发送参数?
      对于标记文件,发送的不是请求参数,而是标记属性!
      在JSP中调用标记:

      在标记文件中使用属性:

    • 如何定义标记文件中所需要的属性——使用attribute指令
      attribute指令只能由标记文件使用,它与定制TLD中的tag部分的attribute子元素有些相似。

      若属性值很大,则把属性从标记文件中取出来,作为体。即在标记文件中不要attribute指令了:

    • 如果没有TLD,那么如何声明体中的内容?——tag指令
      标记文件中不但有attribute指令,还有tag指令,tag指令有body-content属性可以声明标记文件的体内容的类型。body-content属性的值有以下三种:
    scriptless(default) tagdependent empty
    不允许脚本 标记体看作纯文本 标记体中什么也没有

    实际上,标记文件标记的体中绝对不允许有scriptlet脚本(可以有EL表达式)。

    • 容器在哪里查找标记文件?
      容器会在4个位置查找标记文件:
    1. 直接在WEB-INF/tags目录中查找
    2. 在WEB-INF/tags的子目录中查找
    3. 在WEB-INF/lib下的JAR文件的META-INF/tags目录中查找
    4. 在WEB-INF/lib下的JAR文件的META-INF/tags的子目录中查找

      注意,如果标记文件部署在一个JAR中,这个标记文件必须有个TLD;若直接凡在Web应用中,就不需要TLD。

    如果标记文件还不够,有时还需要Java

    到目前为止,利用标记文件,非Java程序员也能建立定制标记。因为无涉及Java类来处理标记的功能,也不涉及为标记文件建立TLD。
    但是,若想要自己编写的标记文件可被别人以JAR的形式调用,那么必须要有TLD,甚至标记处理器(Java类)。

    • 标记处理器
      标记处理器不同于标记文件,他是完成标记工作的Java类,与EL函数有些相似,但是更强大更灵活。
      EL函数只是一些静态方法,而标记处理器类可以访问标记属性、标记体,甚至能访问页面上下文,从而得到作用域属性和请求及响应。
    • 定制标记处理器的两种类型:简单和传统
      一般来说,简单类型几乎能满足所有需要。

    建立一个简单标记处理器

    • 一般步骤
    1. 编写一个扩展SimpleTagSupport的类
    2. 实现doTag()方法
    3. 为标记创建一个TLD
    4. 部署标记处理器和TLD
    5. 编写一个使用标记的JSP

    • 一个例子



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

    自己定制一个有属性简单标记(类似c:forEach?)

    停止页面处理——SkipPageException

    停止页面处理,不仅仅是抛出异常,而是希望页面已经处理的前一部分作为响应出现,但是不会出现因为某些原因停止处理的后一部分。


    可见标记以后的页面信息(Back in the page ….)没有输出!

    若从一个被包含页面调用标记,会发生什么情况?

    SkipPageException只是停止直接调用标记的页面,外层页面会仍然继续执行。

    简单标记的要点

    简单标记和传统标记的区别

    传统标记对比简单标记可以看看:

  • 相关阅读:
    The 2014 ACM-ICPC Asia Xi'an Regional Contest — F题 Color
    CodeForces 358D — Dima and Hares
    VIJOS国庆节模拟赛之繁星春水
    两个算法
    HDU 4901
    Andrew Stankevich Contests #2
    HDU 4701
    HDU 5033
    程序安装出现错误代码为2869
    常用正则表达式总结(以后加了再补充)
  • 原文地址:https://www.cnblogs.com/myitroad/p/6192533.html
Copyright © 2011-2022 走看看