| Java+XML+MVC 架構StrutsCX簡介 StrutsCX是一個以Struts為基礎的XML解決方案的架構,和Struts不同,它使用XML(確切的說是XSLT)作為表現層,而不是像Struts那樣是以JSP作為表現層。 目前它的最新版本是0.9.5,這個也就意味著它還沒有完全穩定和成熟,但是目前它所具備的一些功能已經足以滿足我們大部分的需要了。 根據其官方網站的說明,它具備如下的特性:
- 可以運行於任何Servlet引擎或者J2EE應用伺服器的輕量架構。
- 實現簡單快速。
- 支援國際化。
- 使用純粹的XML和XSLT解決方案替換Struts的JSP和Message資源特性。
- 輸出100%符合XML, XHTML, XSL-FO, WML或者其他的格式標準。
- 錯誤驗證簡單。
- 內部使用JDOM。
- 包括FOP,支援PDF, SVG和ASCII輸出。
- 包括Struts Validator。
- 支援多種轉換。
- 支援用戶端XSLT。
- 包含範例應用(單個的WAR包)。
從其結構而言,它和Struts的不同之處在於Action執行完畢以後的回應,Struts在Action執行完畢之後轉向的是JSP,而StrutsCX轉向到的是它的核心類:StrutsCXServlet,該類會根據設定檔尋找得到XSL檔案,並且自動產生帶有XSL綁定的XML檔案(內部是結合StrutsCXDocumentBuilder和StrutsCXTransformer),對於一些較新的支援XML的瀏覽器(包括IE5以上,Mozilla 1.4以上)就可以顯示結果了。 以下兩個圖片可以讓我們對比一下Struts和StrutsCX的結構:
Struts
StrutsCX 至於其安裝和配置,其網站(http://it.cappuccinonet.com/strutscx/install.php?target=install)有其全面的說明。 簡單說明如下: 拷貝所需的jar包(該項目依賴很多很受歡迎的開源項目的結晶,例如avolon,Castor XML,dom4j,FOP,Jakarta Commons ,Jakarta ORO ,JDOM ,Log4j ,Struts ,Xerces) 配置web.xml聲明使用StrutsCXServlet: <!-- StrutsCXServlet --> <servlet> <servlet-name>StrutsCXServlet</servlet-name> <servlet-class>com.cappuccinonet. strutscx.xslt.StrutsCXServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>StrutsCXServlet</servlet-name> <url-pattern>/StrutsCXServlet</url-pattern> </servlet-mapping> 配置struts-config.xml使用StrutsCXPlugIn: <plug-in className=" com.cappuccinonet.strutscx.util.StrutsCXPlugIn"> <set-property property="config" value="/WEB-INF/strutscx-config.xml" /> </plug-in> 編寫Action,和Struts不同,我們需要在Action裡面設定要綁定的XSL檔案的路徑: // pointer to the strutscx-definitions String xslFile = "simple.xsl"; // set it to the HttpServletRequest request.setAttribute( StrutsCXConstants.XSL_KEY, xslFile); 以上只是一個非常簡單的介紹,由於筆者正在做的一個項目是一個重寫的項目,要求使用最新的技術,未來有可能支援WML,因此採取的解決方案就是使用XML代替JSP,而目前可以找到的就是這個架構了。 根據目前我們使用的經驗,主要問題可能還是國際化支援上的問題,因為其給出的國際化支援的方案和我們現在常用的基於JAVA的properties或者Resources方案不同,需要採用它定義的XML格式,因此使用不是很方便。 至於開發方面,這裡需要介紹的就是我們的開發經驗,其實也沒有什麼,由於剛剛開始的時候我們對其產生的XML檔案的內容不是很熟悉,因此我們採用的開發步驟如下: 配置strutscx-config.xml檔案,編寫Action和FormBean,以偵錯模式觀看其產生的XML檔案的內容,依據XML內容編寫XSL,最後測試XSL檔案是否正確。 需要注意的是我們要在strutscx-config.xml中將debugxml設定為on,然後我們在調用Action的時候在URL中增加debugxml=true讓其向瀏覽器輸出XML(例如http://localhost:8080/sample/hello.do?debugxml=true) 由於這個架構還非常的新,目前介紹這個架構的內容還不是很多,使用的人也可能不是很多,但是筆者相信在XML的大旗下這個架構應該是會很廣泛的應用的。 : http://sourceforge.net/project/showfiles.php?group_id=67148&package_id=65546&release_id=201686 |