正確的學習方法不僅能夠讓你事半功倍,也能夠讓你更加接近真理。在這一系列的文章之初,我想首先說說學習乙個開源框架的途徑。這些學習方法,不僅適用於struts2,我想同樣適用於許多其他的開源框架,比如說spring,hibernate等等。而這些學習方法,也是我個人的一些心得體會,希望對初學者或者正在為學習開源框架犯愁的朋友帶來一些啟示。
1. 看英文文件太吃力
應該說閱讀英文文件是每個程式設計師的基本素質之一,這就跟調程式需要耐心一樣。如果你連除錯程式的耐心都沒有,那麼趁早放棄程式設計師這個行當吧。其實閱讀文件,尤其是英文文件,也是程式設計師的基本素質,這個素質是一點一點積累培養起來的。所以,對於那些實在覺得吃力的朋友,我的建議是結合中文文件一起看。好在滿江紅的開源支持者為你精心做了許多很有價值的翻譯,例如spring,hibernate等都有對應的中文文件。但是我依舊認為,看中文文件,必須和英文文件對照,否則你就可能迷失在許多的語義不匹配上。
2. reference實在太厚而抓不住思路
耐心,耐心,還是耐心。從reference的質量而言,其實多數的開源框架的reference都是相當優秀的。尤其是struts2,基本上都是乙個乙個的專題wiki文章拼起來的文件。至於說到spring,那只能培養你的耐心了。
1. 這些自帶的reference多數出自這些開源框架的作者之手。你說還有誰能夠比他們自己更了解他們自己的產品呢?自己寫的程式,到底有哪些優點,如何使用,自己肯定是最最清楚的,所以要說到權威,不可能有任何的文件比自帶的reference更加權威。
2. 自帶的reference幾乎很少犯錯,所以不會給你帶來什麼的誤導資訊。不僅如此,許多的reference已經為你總結了許多框架使用過程中的最佳實踐。有那麼好的事情,為什麼我們不直接去看這些reference來獲得第一手的資料呢?
當然,很多人看reference會覺得很枯燥。沒關係,我的建議是,多看幾遍。第一遍,你可以採取scan的方式,目的是了解框架的大概。第二遍,挑重點的章節仔細閱讀,並且輔以一定的**實踐。第三遍,帶著碰到的問題閱讀,在文件中尋找答案。
對於很多初學者來說,看reference這種方式他們的接受程度很低。相反的,他們反而會去轉向一些書籍和網路教程。針對這些學習材料,我就不得不帶著有色眼鏡去看待了。
目前市場上任何的有價書籍,我認為完全沒有閱讀的必要。這些書籍的一大特點是貴,將花費你大量的銀子。而且這些書籍錯誤繁多,所挑出的示例也基本上毫無實踐意義。更加可悲的是,這些書籍中的很多示例,作者在寫的時候根本不動腦筋,也不會包含程式開發中的一些最佳實踐,甚至會給很多讀者以:「程式就是這麼寫的」這樣的誤導。
網路上還有很多原版的教程,例如《*** in action》系列。《*** in action》系列的書籍在市場上深受好評。這些系列的書籍我很多都讀過,我並不認為這一系列的叢書相對於框架自帶的reference有什麼過人之處,有某些地方的理解也帶有一些作者個人的感**彩。其實每個人寫書或者寫文章都會帶上自己的感**彩,這本不是什麼壞事,不過既然已經有了 reference,為什麼我們要捨近求遠呢?當然,不得不說,這個系列的書籍還是寫得相當不錯的,只是相對reference而言,不如 reference來的好了。少讀,精讀。因為網路教程是網友自發的,而我不得不說,許多網友寫的網路教程是一塌糊塗,誤導世人的。同時,也有很多網路寫的網路教程相當不錯,可以作為入門級別的參考資料。但是對於初學者來說,根本很難分辨其中的好壞真偽。完全憑藉運氣去賭大小,押寶押對了就對了,押錯了就自認倒霉。所以,針對網路教程,最好是帶著問題去讀,去搜尋你的答案,而不是當作核心文件來閱讀。
我不知道有多少初學者真正的去跑過每個開源框架自帶的sample專案。按照我的經驗來說,這絕對是乙個學習的最佳途徑。
其實你可以從這些專案中獲得許許多多有用的資訊。不僅如此,一旦你在使用struts2的某些特性的時候發生了無法解決的困難,你往往也能從這些專案中找到一些解決問題的方案。更加能讓你放心的是,至少這些專案表達了struts2的作者原本的意思,你只要按照它的sample來寫**,總不會錯到**去。
在這裡,我簡單舉例來說明你可以從這些專案中學到些什麼:
1. 如果你仔細學習struts2-blank-2.0.11.war這個專案,它可以告訴你如何搭建乙個最最簡單的struts2的專案;它還會告訴你,struts2至少需要依賴哪些jar包(請以後不要再為jar包錯誤而苦惱);同時,也給你做出了一些範例,web.xml怎麼寫,struts.xml又怎麼寫。
2. struts2-showcase-2.0.11.war這個專案,你則可以看到struts2的特性的大雜燴,這對於你看reference是相當有幫助的。比如說,你在看文件時看到了"檔案上傳"的章節,那麼你就可以參考專案中的upload子目錄。相當於你一邊看文件,一邊已經有乙個現成的跑得通的例子在這裡提供給你。這是不是要比那些所謂的網路教程更實際呢?
3. struts2-portlet-2.0.11.war則給出了在portal環境下的struts2的應用。
所以,綜合來說,框架自帶的專案絕對是你學習的第一手資料,你基本上不需要捨近求遠得去找網路上別人寫的例子,原生態,不好嘛?
這一點其實不用我說,大家也應該明白。不過我還是見過不少的程式設計師,眼高手低。成天能夠和人吹牛說這個框架怎麼怎麼好,那個框架怎麼怎麼方便。讓他自己動手來用這些框架寫一段程式出來,手足無措,搞了半天,就是無法跑通。
所以,實踐是檢驗真理的唯一標準。只有自己親自動手去實踐,才能說你真正掌握了某個技術,理解了某個框架。在編寫自己的sample專案時,你不妨就以最簡單的user的增刪改查作為你的業務場景,在實踐中不斷的重構你的**,從而提公升自己的水平。
如果你對某個開源框架的使用已經比較熟練,對其內部的原理也基本清晰了。你或許會對其中的某些設計原理產生一些問題(或許僅對勤於思考的人有效)。這個時候,我認為你可以試圖去看一看開源框架的原始碼。
我看開源框架的原始碼的方式有些特殊,我喜歡在程式裡做debug,來看看在開源框架的內部,到底執行了哪些類,他們是如何執行的。我堅決反對逐個包逐個包的去看原始碼,這毫無意義。因為這相當於把乙個肢體進行了分解,乙個執行狀態良好的程式,你把它割裂開來,顯然什麼都讀不懂。在程式中debug原始碼,你不僅可以瀏覽到程式執行過程中的每個類,還能檢視這些類的執行狀態。這才是閱讀原始碼之道。
struts2學習筆記 struts2的配置檔案
一 struts.xml定義bean的作用 1.建立該bean的例項,將該例項作為struts2框架的核心元件使用。2.bean包含的靜態方法需要乙個值注入。很方便地允許不建立某個類的例項,卻可以接受框架常量。通常需要設定static true 通常,當指定了type屬性時,該屬性不應該制定為tru...
struts2學習筆記 struts2的配置檔案
一 struts.xml定義bean的作用 1.建立該bean的例項,將該例項作為struts2框架的核心元件使用。2.bean包含的靜態方法需要乙個值注入。很方便地允許不建立某個類的例項,卻可以接受框架常量。通常需要設定static true 通常,當指定了type屬性時,該屬性不應該制定為tru...
struts2 學習筆記2
這裡我碰到了乙個問題,如果我們簡單的將所有的jsp放在 web inf xx.jsp下,那沒有任何問題,在jsp中我們定義form如下所表示 配置檔案會解析匹配找到相應的action,並跳轉到我在配置檔案中設定的jsp,form中action屬性中的mystruts不能刪除,後面的namespace...