當前位置:歷史故事大全網 - 故事大全 - 學JAVA然後又是SSH學這麽多以後就業用什麽而且還大多用不到!以後究竟該怎麽學啊!請高手賜教!

學JAVA然後又是SSH學這麽多以後就業用什麽而且還大多用不到!以後究竟該怎麽學啊!請高手賜教!

1.struts

struts框架具有組件的模塊化,靈活性和重用性的優點,同時簡化了基於MVC的web應用程序的開發。

優點:

Struts跟Tomcat、Turbine等諸多Apache項目壹樣,是開源軟件,這是它的壹大優點。使開發者能更深入的了解其內部實現機制。

除此之外,Struts的優點主要集中體現在兩個方面:Taglib和頁面導航。Taglib是Struts的標記庫,靈活動用,能大大提高開發效率。另外,就目前國內的JSP開發者而言,除了使

用JSP自帶的常用標記外,很少開發自己的標記,或許Struts是壹個很好的起點。

關於頁面導航,我認為那將是今後的壹個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過壹個配置文件,即可把握整個系統各部分之間的聯系,這對於後期的維護有著

莫大的好處。尤其是當另壹批開發者接手這個項目時,這種優勢體現得更加明顯。

另外,struts是業界"標準"(很多成功案例),學習資源豐富,HTML標簽非常優秀

缺點:

Taglib是Struts的壹大優勢,但對於初學者而言,卻需要壹個持續學習的過程,甚至還會打亂妳網頁編寫的習慣,但是,當妳習慣了它時,妳會覺得它真的很棒。

Struts將MVC的Controller壹分為三,在獲得結構更加清晰的同時,也增加了系統的復雜度。

ActionForms使用不便、無法進行單元測試(StrutsTestCase只能用於集成)

IT168技術文檔

Struts跟Tomcat、Turbine等諸多Apache項目壹樣,是開源軟件,這是它的壹大優點。使開發者能更深入的了解其內部實現機制。 Struts開放源碼框架的創建是為了使開發者

在構建基於Java Servlet和JavaServer Pages(JSP)技術的Web應用時更加容易。Struts框架為開放者提供了壹個統壹的標準框架,通過使用Struts作為基礎,開發者能夠更專註

於應用程序的商業邏輯。Struts框架本身是使用Java Servlet和JavaServer Pages技術的壹種Model-View-Controller(MVC)實現.

具體來講,Struts的優點有:

1. 實現MVC模式,結構清晰,使開發者只關註業務邏輯的實現.

2. 有豐富的tag可以用 ,Struts的標記庫(Taglib),如能靈活動用,則能大大提高開發效率。另外,就目前國內的JSP開發者而言,除了使用JSP自帶的常用標記外,很少開發

自己的標記,或許Struts是壹個很好的起點。

3. 頁面導航.頁面導航將是今後的壹個發展方向,事實上,這樣做,使系統的脈絡更加清晰。通過壹個配置文件,即可把握整個系統各部分之間的聯系,這對於後期的維護有

著莫大的好處。尤其是當另壹批開發者接手這個項目時,這種優勢體現得更加明顯。

4. 提供Exception處理機制 .

5. 數據庫鏈接池管理

6. 支持I18N

缺點:

壹、 轉到展示層時,需要配置forward,每壹次轉到展示層,相信大多數都是直接轉到jsp,而涉及到轉向,需要配置forward,如果有十個展示層的jsp,需要配置十次struts

,而且還不包括有時候目錄、文件變更,需要重新修改forward,註意,每次修改配置之後,要求重新部署整個項目,而tomcate這樣的服務器,還必須重新啟動服務器,如果業務

變更復雜頻繁的系統,這樣的操作簡單不可想象。現在就是這樣,幾十上百個人同時在線使用我們的系統,大家可以想象壹下,我的煩惱有多大。

二、 Struts 的Action必需是thread-safe方式,它僅僅允許壹個實例去處理所有的請求。所以action用到的所有的資源都必需統壹同步,這個就引起了線程安全的問題。

三、 測試不方便. Struts的每個Action都同Web層耦合在壹起,這樣它的測試依賴於Web容器,單元測試也很難實現。不過有壹個Junit的擴展工具Struts TestCase可以實現它

的單元測試。

四、 類型的轉換. Struts的FormBean把所有的數據都作為String類型,它可以使用工具Commons-Beanutils進行類型轉化。但它的轉化都是在Class級別,而且轉化的類型是不

可配置的。類型轉化時的錯誤信息返回給用戶也是非常困難的。

五、 對Servlet的依賴性過強. Struts處理Action時必需要依賴ServletRequest 和ServletResponse,所有它擺脫不了Servlet容器。

六、 前端表達式語言方面.Struts集成了JSTL,所以它主要使用JSTL的表達式語言來獲取數據。可是JSTL的表達式語言在Collection和索引屬性方面處理顯得很弱。

七、 對Action執行的控制困難. Struts創建壹個Action,如果想控制它的執行順序將會非常困難。甚至妳要重新去寫Servlet來實現妳的這個功能需求。

八、 對Action 執行前和後的處理. Struts處理Action的時候是基於class的hierarchies,很難在action處理前和後進行操作。

九、 對事件支持不夠. 在struts中,實際是壹個表單Form對應壹個Action類(或DispatchAction),換壹句話說:在Struts中實際是壹個表單只能對應壹個事件,struts這種事

件方式稱為application event,application event和component event相比是壹種粗粒度的事件。

Struts重要的表單對象ActionForm是壹種對象,它代表了壹種應用,這個對象中至少包含幾個字段,這些字段是Jsp頁面表單中的input字段,因為壹個表單對應壹個事件,所

以,當我們需要將事件粒度細化到表單中這些字段時,也就是說,壹個字段對應壹個事件時,單純使用Struts就不太可能,當然通過結合JavaScript也是可以轉彎實現的。

2.Hibernate

Hibernate是壹個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。

Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程序實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中

取代CMP,完成數據持久化的重任。

大多數開發機構經常采取創建各自獨立的數據持久層。壹旦底層的數據結構發生改變,那麽修改應用的其余部分使之適應這種改變的代價將是十分巨大的。Hibernate適時的填補了

這壹空白,它為Java應用提供了壹個易用的、高效率的對象關系映射框架。hibernate是個輕量級的持久性框架,功能卻非常豐富。

優點:

a.Hibernate 使用 Java 反射機制 而不是字節碼增強程序來實現透明性。

b.Hibernate 的性能非常好,因為它是個輕量級框架。 映射的靈活性很出色。

c.它支持各種關系數據庫,從壹對壹到多對多的各種復雜關系。

缺點:它限制您所使用的對象模型。(例如,壹個持久性類不能映射到多個表)其獨有的界面和可憐的市場份額也讓人不安,盡管如此,Hibernate 還是以其強大的發展動力減輕了

這些風險。其他的開源持久性框架也有壹些,不過都沒有 Hibernate 這樣有市場沖擊力。

上面回貼情緒有點激動,希望諒解,我不是因為有人批評Hibernate而感到不快,而是因為帖子裏面的觀點實在讓我覺得荒謬。不管覺得Hibernate好也吧,不好也吧,我唯壹覺得

遺憾的是,在中文論壇裏面找不到壹個對Hibernate的真正高水平的評價。在TSS上有壹個關於Hibernate的hot thread,跟了幾百貼,其中包括Hibernate作者Gavin和LiDO JDO的

CTO,對於JDO和Hibernate有過壹些激烈的爭論,我曾經耐心的看了壹遍,仍然沒有發現針對Hibernate真正有力的攻擊,那些所謂的攻擊無非針對Hibernate沒有壹個GUI的配置工

具,沒有商業公司支持,沒有標準化等等這些站不住腳的理由。

補充幾點我的意見:

壹、Hibernate是JDBC的輕量級的對象封裝,它是壹個獨立的對象持久層框架,和App Server,和EJB沒有什麽必然的聯系。Hibernate可以用在任何JDBC可以使用的場合,例如Java

應用程序的數據庫訪問代碼,DAO接口的實現類,甚至可以是BMP裏面的訪問數據庫的代碼。從這個意義上來說,Hibernate和EB不是壹個範疇的東西,也不存在非此即彼的關系。

二、Hibernate是壹個和JDBC密切關聯的框架,所以Hibernate的兼容性和JDBC驅動,和數據庫都有壹定的關系,但是和使用它的Java程序,和App Server沒有任何關系,也不存在

兼容性問題。

三、Hibernate不能用來直接和Entity Bean做對比,只有放在整個J2EE項目的框架中才能比較。並且即使是放在軟件整體框架中來看,Hibernate也是做為JDBC的替代者出現的,而

不是Entity Bean的替代者出現的,讓我再列壹次我已經列n次的框架結構:

傳統的架構:

1) Session Bean <-> Entity Bean <-> DB

為了解決性能障礙的替代架構:

2) Session Bean <-> DAO <-> JDBC <-> DB

使用Hibernate來提高上面架構的開發效率的架構:

3) Session Bean <-> DAO <-> Hibernate <-> DB

就上面3個架構來分析:

1、內存消耗:采用JDBC的架構2無疑是最省內存的,Hibernate的架構3次之,EB的架構1最差。

2、運行效率:如果JDBC的代碼寫的非常優化,那麽JDBC架構運行效率最高,但是實際項目中,這壹點幾乎做不到,這需要程序員非常精通JDBC,運用Batch語句,調整

PreapredStatement的Batch Size和Fetch Size等參數,以及在必要的情況下采用結果集cache等等。而壹般情況下程序員是做不到這壹點的。因此Hibernate架構表現出最快的運行

效率。EB的架構效率會差的很遠。

3、開發效率:在有JBuilder的支持下以及簡單的項目,EB架構開發效率最高,JDBC次之,Hibernate最差。但是在大的項目,特別是持久層關系映射很復雜的情況下,Hibernate效

率高的驚人,JDBC次之,而EB架構很可能會失敗。

4、分布式,安全檢查,集群,負載均衡的支持

由於有SB做為Facade,3個架構沒有區別。

四、EB和Hibernate學習難度在哪裏?

EB的難度在哪裏?不在復雜的XML配置文件上,而在於EB運用稍微不慎,就有嚴重的性能障礙。所以難在妳需要學習很多EJB設計模式來避開性能問題,需要學習App Server和EB的

配置來優化EB的運行效率。做EB的開發工作,程序員的大部分精力都被放到了EB的性能問題上了,反而沒有更多的精力關註本身就主要投入精力去考慮的對象持久層的設計上來。

Hibernate難在哪裏?不在Hibernate本身的復雜,實際上Hibernate非常的簡單,難在Hibernate太靈活了。

當妳用EB來實現持久層的時候,妳會發現EB實在是太笨拙了,笨拙到妳根本沒有什麽可以選擇的余地,所以妳根本就不用花費精力去設計方案,去平衡方案的好壞,去費腦筋考慮

選擇哪個方案,因為只有唯壹的方案擺在妳面前,妳只能這麽做,沒得選擇。

Hibernate相反,它太靈活了,相同的問題,妳至少可以設計出十幾種方案來解決,所以特別的犯難,究竟用這個,還是用那個呢?這些方案之間到底有什麽區別呢?他們的運行原

理有什麽不同?運行效率哪個比較好?光是主鍵生成,就有七八種方案供妳選擇,妳為難不為難?集合屬性可以用Set,可以用List,還可以用Bag,到底哪個效率高,妳為難不為

難?查詢可以用iterator,可以用list,哪個好,有什麽區別?妳為難不為難?復合主鍵妳可以直接在hbm裏面配置,也可以自定義CustomerType,哪種比較好些?妳為難不為難?

對於壹個表,妳可以選擇單壹映射壹個對象,也可以映射成父子對象,還可以映射成兩個1:1的對象,在什麽情況下用哪種方案比較好,妳為難不為難?

這個列表可以壹直開列下去,直到妳不想再看下去為止。當妳面前擺著無數的眼花繚亂的方案的時候,妳會覺得幸福呢?還是悲哀呢?如果妳是壹個負責的程序員,那麽妳壹定會

仔細研究每種方案的區別,每種方案的效率,每種方案的適用場合,妳會覺得妳已經陷入進去拔不出來了。如果是用EB,妳第壹秒種就已經做出了決定,根本沒得選擇,比如說集

合屬性,妳只能用Collection,如果是Hibernate,妳會在Bag,List和Set之間來回猶豫不決,甚至搞不清楚的話,程序都沒有辦法寫。

3. Spring

它是壹個開源的項目,而且目前非常活躍;它基於IoC(Inversion of Control,反向控制)和AOP的構架多層j2ee系統的框架,但它不強迫妳必須在每壹層 中必須使用Spring,因

為它模塊化的很好,允許妳根據自己的需要選擇使用它的某壹個模塊;它實現了很優雅的MVC,對不同的數據訪問技術提供了統壹的 接口,采用IoC使得可以很容易的實現bean的裝

配,提供了簡潔的AOP並據此實現Transcation Managment,等等

優點

a. Spring能有效地組織妳的中間層對象,不管妳是否選擇使用了EJB。如果妳僅僅使用了Struts或其他為J2EE的 API特制的framework,Spring致力於解決剩下的問題。

b. Spring能消除在許多工程中常見的對Singleton的過多使用。根據我的經驗,這是壹個很大的問題,它降低了系統的可測試性和面向對象的程度。

c. 通過壹種在不同應用程序和項目間壹致的方法來處理配置文件,Spring能消除各種各樣自定義格式的屬性文件的需要。曾經對某個類要尋找的是哪個魔法般的屬性項或系統屬

性感到不解,為此不得不去讀Javadoc甚至源編碼?有了Spring,妳僅僅需要看看類的JavaBean屬性。Inversion of Control的使用(在下面討論)幫助完成了這種簡化。

d. 通過把對接口編程而不是對類編程的代價幾乎減少到沒有,Spring能夠促進養成好的編程習慣。

e. Spring被設計為讓使用它創建的應用盡可能少的依賴於他的APIs。在Spring應用中的大多數業務對象沒有依賴於Spring。

f. 使用Spring構建的應用程序易於單元測試。

g. Spring能使EJB的使用成為壹個實現選擇,而不是應用架構的必然選擇。妳能選擇用POJOs或local EJBs來實現業務接口,卻不會影響調用代碼。

h. Spring幫助妳解決許多問題而無需使用EJB。Spring能提供壹種EJB的替換物,它們適用於許多web應用。例如,Spring能使用AOP提供聲明性事務管理而不通過EJB容器,如果

妳僅僅需要與單個數據庫打交道,甚至不需要壹個JTA實現。

i. Spring為數據存取提供了壹個壹致的框架,不論是使用的是JDBC還是O/R mapping產品(如Hibernate)。

Spring確實使妳能通過最簡單可行的解決辦法來解決妳的問題。而這是有有很大價值的。

缺點:使用人數不多、jsp中要寫很多代碼、控制器過於靈活,缺少壹個公用控制器

  • 上一篇:四年級網絡安全手抄報簡單
  • 下一篇:地理問題:當研究全球幹旱地區供水問題時,哪個地區比較典型,詳情
  • copyright 2024歷史故事大全網