Struts框架的優勢在于允許開發人員根據實際需求來擴展框架,定制客戶化的功能.不過作為一個優秀的軟件框架是應該具備可擴展的功能的.在Struts框架中提供了許多可擴展之處,不妨將其稱為擴展點(Extension Point),以下是Struts的擴展點:
1) 一般性擴展點:Struts插件PlugIn,擴展Struts配置類.
2) 控制器擴展點:擴展ActionServlet類,RequestProcessor類和Action類.
3) 視圖的擴展點:擴展Struts客戶化標簽.
4) 模型的擴展點:擴展SessionContainer類和ApplicationContainer.
Struts1.1框架提供了動態插入和加載組件的功能,這種組件被稱為Struts插件,實際
上就是一個JAVA類,它在Struts應用啟動的時候被初始化,在應用關閉的時候被銷毀.任何作為插件的JAVA類逗應該實現org.apache.struts.action.PlugIn接口,主要包括兩個方法.init()方法.的參數是ActionServlet和ApplicationConfig還又一個就是destroy()方法.注意的是要用implements關鍵字實現PlugIn接口.除了創建插件類外,還需要在Struts配置文件中配置插件.在啟動的時候會啟動將根據相關的配置信息來初始化插件.與插件對應的配置元素為<plug-in>元素包含一個<set-property>子元素,它定義了插件的屬性,與之對應的是在具體的實現了PlugIn接口的類中定義的成員變量的get/set方法.Struts框架加載插件的時候會調用插件類的set()方法,把<set-property>子元素設置的屬性傳給PlugIn實例的成員變量.根據Struts配置文件的DTD定義,在Struts配置文件中,<pulg-in>元素必須位于其他配置元素的后面,此外,如果在配置文件中配置了多個插件,框架將按照他們的先后順序來依次初始化.
擴展Struts的配置類是在Struts應用啟動的時候,配置文件中所有的信息都會被讀到內存中,這些信息在org.apache.struts.config包相應的配置類的實例中.這個一般不推薦使用,除非個別情況.
控制器擴展點在Struts1.1版本以前會被使用,當初都是需要擴展ActionServlet類,來實現各種定制的功能.在Struts1.1版本開始擴展ActionServlet已經顯的不是必須的了,這也也不推薦使用.如果要擴展RequestProcessor類,應該在配置文件中通過<controller>元素對自定義的類進行配置.在自定義的RequestProcessor類中,可以覆蓋processPreprocess()方法來執行特定的邏輯.如果在某些條件下希望終止處理請求,只需讓processPreprocess()放回false即可.在這種情況下,仍需要以編程的方法來決定如何轉發或者重定向請求.要注意的地方是如果方法返回false,那么應該在方法內部決定如何轉發請求.而且Struts還可以擴展視圖和模型組件,不過這些顯的已經沒什么必要了,除非是Struts的客戶化標簽不能滿足項目的需求,可以考慮擴展視圖組件.
擴展Action到是Struts框架中最頻繁的擴展點,對于具體的Struts應用,可以先為應用創建一個擴展StrutsAction類的Action基類,在這個基類中定義應用中所有的Action的一些公共邏輯也就是通用的方法,這種處理方法可以提高代碼的重用性,減少代碼重復.
擴展Struts框架可以根據具體的項目,進行具體的處理.大家如果看過我的文章和之前寫的文章希望能給予一些評價,希望大家能指出我的缺點和不足謝謝! (網友們的支持,是我繼續寫技術文章的動力!)
posted on 2005-10-27 13:39
我心依舊 閱讀(1090)
評論(0) 編輯 收藏