隨筆-199  評論-203  文章-11  trackbacks-0

              由于Struts框架在全球的廣泛使用,學習它的人也非常之多,但是大部分人花費了太多不必要的時間和精力在一些不太重要的地方,導致學習代價高昂,成效也不是很好。我這里根據多年學習經驗的總結,精心設計了一套學習Struts框架的曲線,讓大伙學習Struts框架既快且準,節省大伙寶貴的時間,一定會對各位學習者大有幫助。

            大家知道,Struts是Apache 基金會Jakarta 項目組的一個開源項目,它采用MVC設計模式,是一個基于Sun J2EE平臺的WEB表現層框架。這里有幾個概念值得大家關注:開源,MVC,J2EE,WEB表現層,框架。我來逐一解釋。

            開源:不用多說,源代碼可以讓你一行一行仔細分析,深入了解其內部實現機制。

            MVC:它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。MVC享有“全球第一設計模式”的美譽,是當前很流行的一種設計理念和思想,你要學好Struts,必要要讓這種思想深入骨髓。

            J2EE:J2EE是使用Java技術開發企業級應用的一種事實上的工業標準。J2EE將組成一個完整企業級應用的不同部分納入不同的容器(Container),每個容器中都包含若干組件(這些組件是需要部署在相應容器中的),同時各種組件都能使用各種J2EE Service/API。其中最常用的容器就是WEB容器(就是我們常說的WEB服務器),里面最核心的兩個組件就是JSP和SERVLET。而Struts就是基于這兩種技術,依賴于WEB容器。

            WEB表現層:我們常說的J2EE四層體系架構:WEB表現層,業務邏輯層,持久層,數據庫層。這是一種邏輯劃分。WEB表現層的特點就是依靠WEB服務器,直接跟客戶端(一般是WEB瀏覽器)打交道。Struts處于WEB表現層,主要就是接受并處理用戶請求,并將處理結果響應給用戶。

            框架:通俗地講,框架就是一個“半成品”,它做了一些通用的東西讓你去配置和擴展。框架的強大之處不是說它能讓你做什么,而是它不能讓你做什么!它使混亂的東西變得結構化。我們來打個比方。框架就像是一間有很多屋梁的房子,當你需要擴建房子的時候,譬如增加新的房間、窗戶和過道或者在臥室增加一個壁爐,由于屋梁的限制,你并沒有什么其他的選擇。雖然較少的屋梁會讓你有更多的選擇,但是當臺風來襲或者發生地震的時候,你讓家人住在這樣一間只有屋頂的房子里,恐怕不會覺得安全吧。總之,框架是在結構和創造力之間的一個精確的天平。

            好了。這里假設大家已經理解了上述概念,并會用JSP/SERVLET做一些普通的WEB應用程序。現在就讓我們來看看如何學習Struts框架吧。這里我以Struts 1.2版本為例。(Struts 2.0的實現跟以前的版本有很大不同,我以后會講到。)讓我們出發吧!

            首先,你要照書本或者網上的例子跑一個最簡單的Struts應用,就是在客戶端顯示一個HELLOWORLD的那種,這叫先睹為快。在這里你開始接觸到做Struts應用需要的東西:Struts的JAR包,核心控制器ActionServlet在web.xml上的配置,針對具體用戶請求URL的Action的編寫以及Struts應用的核心配置文件Struts-config.xml。做完后停下來思考一下。

            然后,你開始跑一個稍微大點的用戶登陸的應用,成功就跳轉到我們的主頁面,失敗就繼續回到登陸頁面。我們引入ActionForm組件和對后臺數據庫的操作。這個時候MVC發揮作用了。ActionServlet和自己編寫的Action分別充當前,后端控制器組件,DAO/DTO充當了模型組件,JSP充當視圖組件。Struts-config.xml也變的飽滿起來,上面開始多了些配置datasources,form-beans,action-mappings。做完后到網上找一些好的參考資料或者利用自己經典的Struts的案頭書(最好是有圖解),開始認真琢磨Struts的運行原理和執行流程,特別要好生體會ActionForm組件的作用和Struts-config.xml這個核心配置文件每一處用到的配置。這個時候,你應該開始有些領悟:我們自己寫的Action還有ActionForm類一定要繼承框架已有的Action和ActionForm,寫完了之后還必須得將它們配置到Struts-config.xml中去。

            接著,你已經對Struts框架有了大致的了解,可能開始對Struts的其他主題感興趣了,OK,現在擴充你的登陸應用吧。先加上驗證,不然你的系統會不堪一擊。驗證分為客戶端驗證和服務器端驗證。服務器端的驗證我們可以在ActionForm里面的validate()方法里做,也可以在隨后的Action類的execute()方法里做,甚至可以使用驗證框架。這里大家要把重點方在驗證框架的學習上。做好后再加上資源國際化I18N,針對不同區域不同語言的客戶提供不同語言版本的頁面顯示。我們開始寫資源屬性文件,開始在Struts-config.xml里面配置,開始使用Struts自帶的標簽,等。這個里面涉及的知識點都很多,需要大家耐心細致地學習。大家在跑這個應用的時候會發現各種各樣的異常和問題。不要害怕,這些錯誤都是我們的好朋友,我們要把它們通通都記錄下來,并堅韌地排除掉它們。這里要記住:盡量避免重復犯錯,不要在同一個地方跌倒兩次。

          再接著,你把上面的都基本消化了,但是總隱隱覺得不夠系統和完整,你就開始做幾個CRUD的應用,完成普通的增刪查改的工作。在做這些應用的過程中,你要認真總結核心配置文件Struts-config.xml里面的8個重要節點元素的配置以及它們的順序,每個節點的重要屬性,特別是里的子節點的屬性是重中之重,一定要好好理解并靈活運用。

            你也要開始系統地學習Struts里面的標簽。但這個時候千萬不要追求大而全,只學習幾種常用的標簽就可以了,重點放在html,bean,還有logic標簽上。這時候還有些小知識點你也許要用到,譬如:文件上傳控件,防止信息重復提交 ,自定義標簽,cookie的使用等等。這就是個相對比較耗時間和精力的階段了,你要做的就是不斷地參考,不斷地思考,不斷地總結,最好還能和志同道合的人不斷地爭論。

            慢慢地,你對Struts框架有了一個全局性的宏觀把握,用它來完成一些小模塊的開發已經沒有太大問題,你已經開始志得意滿了:Struts不過如此嘛!如果你到了這一步,我首先要恭喜你,你接近成功了。但我也要小心地提醒你:Struts里面還有很多東西值得挖掘!你不妨多問一下自己,軟件有一個人開發的嗎?頁面我使用了良好的布局嗎?頁面導航都是那么簡單嗎?我的所有做法就不能有更簡單的實現了嗎?我對學習Struts框架的好處了如指掌了嗎?好的,如果你想通了,帶著這些問題,你就會重新披掛上陣,開始學習Struts的多模塊開發,開始學習tiles框架,開始認真研讀Struts的源代碼,開始學習一些更簡單有效的Action組件類和ActionForm組件類……,真應了一句古語:吾生也有涯,知也無涯!最后呢,大家可能會悟出一些道理:譬如Struts框架基本的好處就是用配置代替編碼,它是一個半成品,是讓我們擴展和配置的等等。

            上面我粗略地勾勒了一下學習Struts的曲線。歸納一下:學習框架需要循序漸進,實例驅動,思考總結。實際上,我在做培訓的過程中發現,如果我們在學習Struts之前,自己動手寫過一個簡易的MVC框架,學習Struts將會非常輕松,大概只需要五天的時間,而且可以學的非常好。大家不要認為框架就是很龐大很復雜的怪獸,自己絕對無法寫出來。其實,無非就是將我們所理解的樸素思想用代碼實現出來罷了。好了,時間關系,今天就寫到這里,祝愿大家學的開心!

           

          posted on 2010-02-24 14:30 Werther 閱讀(2349) 評論(2)  編輯  收藏 所屬分類: 20.Struts

          評論:
          # re: Struts框架學習方法的分享 2010-02-24 18:29 | 去去去
          期待struts2的相關內容!  回復  更多評論
            
          # re: Struts框架學習方法的分享 2010-02-26 13:21 | benlr
          寫的非常好,我將以此為學習的指導  回復  更多評論
            
          主站蜘蛛池模板: 贵阳市| 安溪县| 泰和县| 克山县| 凉城县| 弥勒县| 上饶市| 梁平县| 富平县| 克山县| 仙居县| 会昌县| 汕头市| 茂名市| 洪雅县| 图木舒克市| 龙川县| 钦州市| 大余县| 胶南市| 抚宁县| 织金县| 柳州市| 宝清县| 柯坪县| 阳西县| 西青区| 屏山县| 四子王旗| 罗甸县| 罗源县| 蒙自县| 高淳县| 桂东县| 江华| 库伦旗| 邵阳县| 揭阳市| 独山县| 稻城县| 龙里县|