Apache Tomcat 4.0的新特性

發表于:2008-02-21來源:作者:點擊數: 標簽:TomcatApacheapache
Tomcat 4.0包含三個主要的部分,包括: * Catalina - 一個符合Servlet API規范2.3的Servlet Container * Jasper - 一個符合JSP規范1.2的JSP編譯器和運行環境 * Webapps - Tomcat中包含的一些例子和用于 測試 的web例程,以及相關文檔。 Tomcat4.0的一個主要
Tomcat4.0包含三個主要的部分,包括:


    * Catalina - 一個符合Servlet API規范2.3的Servlet Container
    * Jasper - 一個符合JSP規范1.2的JSP編譯器和運行環境
    * Webapps - Tomcat中包含的一些例子和用于測試的web例程,以及相關文檔。

    Tomcat4.0的一個主要目的是支持目前正在處于測試版的Servlet2.3規范和JSP1.2規范的新特性。本文主要介紹Tomcat4.0實現的這些新特性以及這些新特性目前在tomcat中的實現情況。

    Servlet API 規范2.3

    應用程序中的事件:


    你可以在web.xml文件中注冊相應的事件監聽器,當這些事件發生時,在應用程序中可以收到相應的事件通知,這些事件包括:
    - 應用啟動
    - 應用關閉
    - 應用的屬性的增加、刪除、被替換
    - Session創建
    - Session失效、超時
    - Session的屬性的增加、刪除、被替換

    事件監聽器的功能被加入到Catalina,看來效果非常好。在Webapps中的web應用examples中就有兩個監聽器的例子用于通過ServerletContext.log()記錄相應的事件。

    Servlet Fliter


    你能夠在web.xml文件中注冊類似與Catalina核心中Valves功能類似的的Filter。Filter主要具有以下特性:
    - Filter能夠映射成相應的URL或特定的Servlet。
    - Filter能被用于對request,reponse對象進行預處理、或后處理。
    - Filter能封裝request、response對象,比如可以對對象中的內容進行轉換。
    - Filter能夠對訪問請求直接響應,然后返回給客戶端,而不僅僅進行訪問請求的傳送,比如,你可以在應用級進行用戶認證。

    與這些特性相關聯,當servlet傳遞參數給RequestDispatcher時就可以做這種類型的封裝。而在以前,你只能將初始的request對象傳遞給Servlet Container,并且從Servlet Container中得到返回的response對象。Servlet filter的功能目前已經加入到Catalina中,并通過了初步測試。在應用examples中有一個filter用于路徑映射和向調用servlet的映射("/servlet/*"),其中存放了最終傳遞給執行Servlet的request對象屬性。

    安裝擴展庫的依賴關系

    Web應用程序或WEB-INF/lib中的jar文件,現在可以聲明對特定版本外部庫的依賴關系,這些外部庫是由Servlet Container作為共享擴展提供的。在Catalina中目前還沒有完全實現這部分功能。

    國際化支持


    Catalina現在支持從Locale向字符集的映射,在ServletRequest中增加了一個新的方法setCharacterEncoding() ,在這一方面,還需要有個多的測試和功能增強。


    Web應用的類裝載器


    Servlet規范草案中9.6.2節中定義了與Web應用中類裝載器相關的需求和建議。這些需求在Catalina中被遵照執行。

    Servlet 2.3應用程序分發描述符的DTD


    在Catalina中包括一個非正式的用于解析web.xml文件的DTD(catalina/src/conf/web_23.dtd)
    它將被正式發布的DTD所替代。

 

    JSP規范1.2


    JSP 對Include flush="false"的支持
    這個變化通過在標準或定制的標記中嵌套使用<jsp:include>標記,允許利用內含的servlet進行緩存、處理,并產生的輸出。這個變化取決于前述的對RequestDispatcher.include()的功能的增強功能。

    JSP頁面的XML視圖


    JSP1.2的實現要求輸入不僅要符合JSP語法,而且要符合XML語法。目前正在將Jasper的parser進行轉換,使得其能接受任何一種類型的輸入。

    屬性編輯器的利用


    假如一個應用對java類的一個特定屬性注冊了一個屬性編輯器(PropertyEditor),那么這個屬性編輯器的setAsText()方法將用于將文本格式的屬性(比如request對象的一個參數)轉換為該屬性的內部表示。假如沒有定義屬性編輯器,那么就采用前述的缺省屬性編輯器進行轉換。

    定制標記庫驗證頁面的合法性


    在定制標記庫中增加了一個新的編譯階段用于檢查頁面的XML視圖,如果檢測到錯誤,就拋出一個轉換時異常。在這當中,可用于驗證:
    - 從語義上不能被TLD中定義的信息驗證的嵌套定制標記
    - 誤用或濫用JSP中定制標記特性。比如,你可以用一個驗證子禁止JSP使用Java語句塊。

    增強的迭代支持


    增強了的定制tag機制支持在不做內容嵌套的前提下進行迭代的能力。這將優化這類非常常見的例子的性能,比如通過迭代來表示一個表格的處理結果,而不用顯式對表格中每一行進行處理。

    定制tag庫能夠聲明應用監聽器


    一個定制的tag庫能夠利用servlet2.3中的新特性,聲明一個監聽器,用于監聽應用程序相關的事件。

    附加的TLD元素


    在許多簡單的例子中,聲明變量時,采用附加的TLD元素可不用書寫TagExtraInfo類

    在Tag接口中增加resetCustomAttributes()方法


    通過由Servlet Container調用附加的方法,使得在循環調用一個tag的實例前調用該方法

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97