应用,一定要应用

BlogJava 首页 新随笔 联系 聚合 管理
  25 Posts :: 0 Stories :: 118 Comments :: 0 Trackbacks

2004-12-03

JSP/XML/JSTL

Jsp xml 的合作

l         方式 1 第一个大的趋势就是以 XML 技术为前端显示层或者是后端数据层

JSP/JMS/Servlet/EJB J2EE 技术为中间处理层

XML 技术充当数据层

l         JSP 技术与 XML 技术集成的另一个趋势就是所谓的 Tag Libraries JSP 程序中的大规 模应用。

Jsp taglib

Tag 引用:

JSP 程序的运行原理根据 JSP1.2 规范的描述 JSP 程序的运行可以分为这样的几个步骤:

1、parsing,即jsp进行xml化,如:

       将会被替换为

2 validation, 验证自定义 tag 是否存在

3 translation, 被翻译为一个 servlet à HttpJspPage à JspPage à Servlet( à 表示继承 )

4 excution, 编译执行。

taglib 编写:

第一步:建立 tag 文件:建立一个 tag.

第二步:设计 tag 的各种属性。

第三步:编写 tagclass teiclass

第四步:编写 jsp 测试。

Jsp tld 文件标志介绍:

1、  jstl 是支持事件的,可以编写 listener, 定义在 taglib 部分。

2、  tag 标记中的 teiclass 指定此 Tag TagExtraInfo tei 即是 Tag Extra Info 三个打头字母的缩写利用 TagExtraInfo ( 基类为 javax.servlet.jsp.tagext.TagExtraInfo 实际中必须覆盖这个类 ) 可以获取一些关于 Tag 的额外信息

3、   bodycontent: bodycontent 指定在 Tag 对之间可以包含的内容的类型比如在 标记与 标记与 标记之间可以包含哪些类型的内容这是由 bodycontent 决定的 bodycontent 可以取以下值 tagdependent, JSP, empty.

4、   tagdependent 标记体内的内容将被送到 Tag Handler 中赋给 Tag 标记体内的内容可以为空。

5、  JSP 标记体内的内容可以是 JSP 代码段也可以是普通的文本用于往客户端输出也可以是空值

6、   empty 标记体内不能含有任何内容

7、   rtexprvalue 指定 Tag 某个属性的值是否可以通过 JSP 代码段动态生成可以使用的值为 false true yes no 缺省值为 false 在本例中 jspFile 的值可以由 JSP 代码动态生成。

8、  attribute type 指定 Tag 某个属性的 Java 类型, 缺省值为 java.lang.String

9 jsptag 可以引起循环。

tag 执行过程介绍:

1、   doStartTag()

l         EVAL_BODY_TAG 其意义是使得 JSP 引擎继续执行这个标记并输出执行结果

l         SKIP_BODY jsp 引擎将忽略这个 tag 后部分的执行。

2、   InitBody() 初始化 Tag Body ,没有任何返回值。

3、   doAfterBody() 这个方法紧接着 doInitBody() 方法执行这是一个自调用式的方法。

l         SKIP_BODY 当它的返回值为 SKIP_BODY JSP 引擎将跳出对这个 Tag 的执行执行 Tag 后面的内容

l         EVAL_BODY_TAG 如果 doAfterBody() 方法的返回值为 EVAL_BODY_TAG 那么 JSP 引擎会自动调用 doAfterBody() 方法直至返回值不是 EVAL_BODY_TAG JSP 引擎才会跳出这个执行循环

4、   doEndTag()

l         SKIP_PAGE 如果是这样的话那么 Tag 后面的所有内容都将被 JSP 引擎自动跳过

l         EVAL_PAGE doEndTag() 方法的返回值也有可能为 EVAL_PAGE 如果是这样的话那么 JSP 引擎会继续执行该 Tag 后面的值

5、   release()

注解: release() 方法 doEndTag() 方法无论在什么时候都将被执行 ,哪怕d oStartTag() 方法或者 doAfterBody() 方法的返回值为 SKIP_BODY 那么这两个方法的后面各步都没有机会被执行 JSP 引擎自动把它们跳过了例如当 doStartTag() 方法的返回值为 SKIP_BODY 时那么 doInitBody() 方法 doAfterBody() 方法方法都不会被执行。

Tag 常量:

Tag 接口中定义了四个: EVAL_BODY_INCLUDE Tag 的执行结果合并到某个输出流中只有 doStartTag() 方法才有可能返回这个值如果 Tag Handler 扩展了 BodyTag 接口那 doStartTag () 方法不能够返回这个值。

类和接口:

开发接口:

Tag接口和TagSupport类:

BodyTag接口和BodyTagSupport类:

定义信息:

TagInfo和TagExtraInfo类:

TagLibaryInfo和TagAttributeInfo类:


其他来自网络上的内容:

定义变量:  
  
    id
    database.BookDetails
    true
    AT_BEGIN
  

定义 TEI

定义 TEI 和定义变量的作用其实是一样的,提供一些可供 jsp script 使用的变量而已,只是这个可以更加的灵活方便一些而已。 GetVaraibleInfo 接口。

posted on 2006-08-24 17:15 flyffa 阅读(1497) 评论(0)  编辑  收藏 所属分类: 读书

只有注册用户登录后才能发表评论。


网站导航: