應(yīng)用,一定要應(yīng)用

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            25 Posts :: 0 Stories :: 118 Comments :: 0 Trackbacks

          2004-12-03

          JSP/XML/JSTL

          Jsp xml 的合作

          l???????? 方式 1 第一個(gè)大的趨勢(shì)就是以 XML 技術(shù)為前端顯示層或者是后端數(shù)據(jù)層

          JSP/JMS/Servlet/EJB J2EE 技術(shù)為中間處理層

          XML 技術(shù)充當(dāng)數(shù)據(jù)層

          l???????? JSP 技術(shù)與 XML 技術(shù)集成的另一個(gè)趨勢(shì)就是所謂的 Tag Libraries JSP 程序中的大規(guī) 模應(yīng)用。

          Jsp taglib

          Tag 引用:

          JSP 程序的運(yùn)行原理根據(jù) JSP1.2 規(guī)范的描述 JSP 程序的運(yùn)行可以分為這樣的幾個(gè)步驟:

          1、parsing,即jsp進(jìn)行xml化,如:

          ?????? 將會(huì)被替換為

          2 validation, 驗(yàn)證自定義 tag 是否存在

          3 、 translation, 被翻譯為一個(gè) servlet 類(lèi) à HttpJspPage à JspPage à Servlet( à 表示繼承 )

          4 、 excution, 編譯執(zhí)行。

          taglib 編寫(xiě):

          第一步:建立 tag 文件:建立一個(gè) tag.

          第二步:設(shè)計(jì) tag 的各種屬性。

          第三步:編寫(xiě) tagclass teiclass

          第四步:編寫(xiě) jsp 測(cè)試。

          Jsp tld 文件標(biāo)志介紹:

          1、? jstl 是支持事件的,可以編寫(xiě) listener, 定義在 taglib 部分。

          2、? tag 標(biāo)記中的 teiclass 指定此 Tag TagExtraInfo 類(lèi) tei 即是 Tag Extra Info 三個(gè)打頭字母的縮寫(xiě)利用 TagExtraInfo 類(lèi) ( 基類(lèi)為 javax.servlet.jsp.tagext.TagExtraInfo 實(shí)際中必須覆蓋這個(gè)類(lèi) ) 可以獲取一些關(guān)于 Tag 的額外信息

          3、?? bodycontent: bodycontent 指定在 Tag 對(duì)之間可以包含的內(nèi)容的類(lèi)型比如在 標(biāo)記與 標(biāo)記與 標(biāo)記之間可以包含哪些類(lèi)型的內(nèi)容這是由 bodycontent 決定的 bodycontent 可以取以下值 tagdependent, JSP, empty.

          4、?? tagdependent 標(biāo)記體內(nèi)的內(nèi)容將被送到 Tag Handler 中賦給 Tag 標(biāo)記體內(nèi)的內(nèi)容可以為空。

          5、? JSP 標(biāo)記體內(nèi)的內(nèi)容可以是 JSP 代碼段也可以是普通的文本用于往客戶端輸出也可以是空值

          6、?? empty 標(biāo)記體內(nèi)不能含有任何內(nèi)容

          7、?? rtexprvalue 指定 Tag 某個(gè)屬性的值是否可以通過(guò) JSP 代碼段動(dòng)態(tài)生成可以使用的值為 false true yes no 缺省值為 false 在本例中 jspFile 的值可以由 JSP 代碼動(dòng)態(tài)生成。

          8、? attribute type 指定 Tag 某個(gè)屬性的 Java 類(lèi)型, 缺省值為 java.lang.String

          9 jsptag 可以引起循環(huán)。

          tag 執(zhí)行過(guò)程介紹:

          1、?? doStartTag()

          l???????? EVAL_BODY_TAG 其意義是使得 JSP 引擎繼續(xù)執(zhí)行這個(gè)標(biāo)記并輸出執(zhí)行結(jié)果

          l???????? SKIP_BODY jsp 引擎將忽略這個(gè) tag 后部分的執(zhí)行。

          2、?? InitBody() 初始化 Tag Body ,沒(méi)有任何返回值。

          3、?? doAfterBody() 這個(gè)方法緊接著 doInitBody() 方法執(zhí)行這是一個(gè)自調(diào)用式的方法。

          l???????? SKIP_BODY 當(dāng)它的返回值為 SKIP_BODY 時(shí) JSP 引擎將跳出對(duì)這個(gè) Tag 的執(zhí)行執(zhí)行 Tag 后面的內(nèi)容

          l???????? EVAL_BODY_TAG 如果 doAfterBody() 方法的返回值為 EVAL_BODY_TAG 那么 JSP 引擎會(huì)自動(dòng)調(diào)用 doAfterBody() 方法直至返回值不是 EVAL_BODY_TAG 時(shí) JSP 引擎才會(huì)跳出這個(gè)執(zhí)行循環(huán)

          4、?? doEndTag()

          l???????? SKIP_PAGE 如果是這樣的話那么 Tag 后面的所有內(nèi)容都將被 JSP 引擎自動(dòng)跳過(guò)

          l???????? EVAL_PAGE doEndTag() 方法的返回值也有可能為 EVAL_PAGE 如果是這樣的話那么 JSP 引擎會(huì)繼續(xù)執(zhí)行該 Tag 后面的值

          5、?? release()

          注解: release() 方法 doEndTag() 方法無(wú)論在什么時(shí)候都將被執(zhí)行 ,哪怕d oStartTag() 方法或者 doAfterBody() 方法的返回值為 SKIP_BODY 那么這兩個(gè)方法的后面各步都沒(méi)有機(jī)會(huì)被執(zhí)行 JSP 引擎自動(dòng)把它們跳過(guò)了例如當(dāng) doStartTag() 方法的返回值為 SKIP_BODY 時(shí)那么 doInitBody() 方法 doAfterBody() 方法方法都不會(huì)被執(zhí)行。

          Tag 常量:

          Tag 接口中定義了四個(gè): EVAL_BODY_INCLUDE Tag 的執(zhí)行結(jié)果合并到某個(gè)輸出流中只有 doStartTag() 方法才有可能返回這個(gè)值如果 Tag Handler 擴(kuò)展了 BodyTag 接口那 doStartTag () 方法不能夠返回這個(gè)值。

          類(lèi)和接口:

          開(kāi)發(fā)接口:

          Tag接口和TagSupport類(lèi):

          BodyTag接口和BodyTagSupport類(lèi):

          定義信息:

          TagInfo和TagExtraInfo類(lèi):

          TagLibaryInfo和TagAttributeInfo類(lèi):


          其他來(lái)自網(wǎng)絡(luò)上的內(nèi)容:

          定義變量: ?
          ??
          ????id
          ????database.BookDetails
          ????true
          ????AT_BEGIN
          ??

          定義 TEI

          定義 TEI 和定義變量的作用其實(shí)是一樣的,提供一些可供 jsp script 使用的變量而已,只是這個(gè)可以更加的靈活方便一些而已。 GetVaraibleInfo 接口。

          posted on 2006-08-24 17:15 flyffa 閱讀(1512) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 讀書(shū)
          主站蜘蛛池模板: 广安市| 象山县| 曲水县| 酒泉市| 宜丰县| 洪泽县| 平果县| 都昌县| 敦煌市| 丹东市| 土默特右旗| 苗栗县| 资源县| 梓潼县| 博白县| 鹤峰县| 益阳市| 邵阳市| 平昌县| 平凉市| 宣威市| 哈巴河县| 定安县| 华亭县| 江山市| 德钦县| 威海市| 承德县| 中西区| 济阳县| 眉山市| 社会| 乳山市| 三台县| 武安市| 沈丘县| 梧州市| 金阳县| 华阴市| 库尔勒市| 广饶县|