回覆列表
  • 1 # IT人劉俊明

    學習Spring、Struts和Hibernate是很多初學者都會經歷的階段,要掌握這三個框架首先要清楚這三個框架都分別解決了哪些問題,同時要知道這三大常見框架的使用場景和框架的內部實現細節。

    Java基礎知識準備

    要開始學習Spring、Struts和Hibernate這三個框架,需要做充足的Java基礎知識學習,知道這些知識才能知道為什麼需要使用這三個框架。下面列出學習三大框架之前的基礎知識:

    Java面向物件開發基礎。這部分內容包括類、物件、方法、屬性四大概念,以及封裝、繼承、多型三大特徵的使用。要清晰面向物件的開發過程:類的定義、物件的建立、方法的呼叫。

    Java操作資料庫。這部分內容包括Java如何與資料庫進行溝通,如何透過java完成資料庫的增刪改查等基本操作。這部分內容還包括如何使用預處理模式提高效率,如何使用CallableStatement完成儲存過程呼叫,以及如何使用資料庫連線池來最佳化資料庫操作。當然還要清楚使用DAO模式來規範化程式碼結構,而這也為使用Hibernate打下了一定的基礎。

    Java web開發基礎。這部分內容包括Servlet、JavaBean、JSP的開發、除錯、部署,清楚web開發的範圍定義以及web容器的配置管理。要清楚web MVC結構,能使用Model2結構進行web程式開發,而這為使用Struts和Spring打下了基礎。

    這個圖示描述了Java透過JDBC(一個專門操作資料庫的Java API)來操作各種資料庫的結構圖,圖中Java程式碼直接完成對資料庫的操作。接下來我們再看一下操作的原理圖,也就是java操作資料庫的細節描述圖:

    透過這張原理圖,我們可以清楚的看到java如何使用JDBC完成與資料庫的具體互動過程,使用JDBC操作資料是Java的官方標準,在經過不斷的更新後,目前的JDBC效能已經得到了顯著的提高。

    在具體開發資料庫操作的時候,我們通常會採用DAO模式,使用DAO的目的是模組化資料庫操作,方便團隊之間的協同化開發,為了描述DAO,我們看一張圖示:

    透過圖示我們能發現,DAO位於業務層和資料庫的中間,可以說它完成了一個對映的任務。這個對映就是從面向物件的Java程式碼向面向關係的資料提供了一個對映,再簡單點說就是:DAO可以讓Java程式設計師以面向物件的方式操作面向關係的資料庫。

    Hibernate的作用與DAO的作用是一樣的,就是完成這個對映層的建立,可以說Hibernate是DAO的一個通用的實現。透過Hibernate程式設計師可以很方便的為程式建立與不同資料庫產品之間的對映,從而讓程式設計師從開發DAO實現的細節工作中解放出來,這就是為什麼要使用Hibernate的原因。

    學習Hibernate並不複雜,如果你已經有過編寫DAO實驗的經驗,那麼使用Hibernate能讓你十分愉快,因為你再也不用編寫麻煩的“封包”和“拆包”程式碼了。

    為什麼要使用Struts和Spring

    為什麼把Struts和Spring放在一起呢,因為它倆關係密切(其實Spring完全可以獨立一站式解決問題),放在一起解釋更加清晰。

    在學習java web開發的時候,會學習到如何使用基於MVC結構的web開發,具體點就是使用Servlet+Javabean+JSP來完成Model2結構的開發,結構圖如下所示:

    圖中完成了使用java程式碼的方式來編寫MVC結構的程式,MVC的開發模式是大家公認的有效且經典的開發結構,目前基本上web開發的標準配置。

    但是在大家自己編寫MVC結構的時候,會比較麻煩(如果這部分內容不清楚,關注我,我會在後續文章中詳細闡述如何使用java程式碼完成mvc開發),因為所有的導航程式碼都需要自己編寫,將來調整的時候也非常麻煩。Struts就很好的解決了這個問題,程式設計師可以透過配置來完成程式的調整,節省了大量的編碼時間,也讓團隊合作開發變得更容易了。簡單的說Struts就是完成了程式MVC結構的實現。

    那麼在上圖中,我們還會發現一個問題,在web容器中還執行著Model元件,而通常Model元件就是JavaBean元件。也就是說web容器既提供了web元件的池功能,又提供了業務元件的池功能,這勢必會影響業務元件的執行效能。為了解決這個問題,出現了兩個陣營:官方標準採用了大名鼎鼎的EJB,解決方案如圖所示:

    圖中清晰的呈現了EJB server,已經把業務模組從web容器中剝離出來了。而另一個解決方案就是Spring,它也是池化業務模組,只不過Spring更加輕量級,所以得到了廣大程式設計師的喜愛。也就是從此,java開發背上了“較重”的標籤。但是EJB目前仍然有它自己的特點,雖然重,但是功能也十分強大。

    所以簡單的說就是Struts完成了MVC框架的實現,Spring提供了業務模組的輕量級容器。

    學習步驟

    其實寫到這,大家已經清楚了學習的步驟,因為文章的描述過程就是一個順序的學習步驟。

    在簡單總結一下:

    學習基礎開發

    學習資料庫開發

    學習web開發

    學習Hibernate

    學習Struts

    學習Spring

    整合

    建議多做實驗,也要經常到三大框架的官網多看一看,如果應用基礎好的讀者,可以到這幾個框架的官方社群多看看,社群裡有很多能力很強的開發者,跟他們交流一定能讓你受益匪淺。

  • 2 # GeCoder

    這裡的新手是多新呢?學習Spring、Struts、Hibernate三大框架前,除了要把java基礎學完(applet和awt,swing可以不看),還要再學習web基礎部分(html,jsp,servlet),建議先熟悉下servlet,這樣可以熟悉下web專案是怎麼運作的,對後面學習其他框架也能更好去理解,比如:hibernate的入門,首先還是先要學會資料庫,JDBC,設計模式,這些都是基礎。

    關注是為了再一次的交流,戳一戳右上角的關注吧!

  • 3 # 不是流浪記中的三毛

    我覺得對於一個java新手來說,最主要的應該不是要問這三個框架怎麼學?要學多久?每個人學習能力,學習週期都不一樣,真不好回答。

    我覺得你應該先把java最基本的語法學好。有需要了,再去了解這三個框架實際應用環境,再去問這三個框架學習哪些內容?千萬不要問,要學多久。

    怎麼學?看書,上網,查資料,看影片學習,然後上機實際操作。

  • 4 # Lrxiang995

    三大框架可以說是Java的必修課了,幾乎所有的Java後臺程式設計師都有接觸過。其實萬變不離其宗,學習框架最重要的是學習原理,剖析完原理以後對於框架可以說有個深層次的理解了。

    Spring

    spring其實來說就是一個大容器。

    下面就是spring的三大核心思想:

    ioc(控制反轉):首先我們舉一個沒有控制反轉的例子。當我們在service層呼叫dao層的函式時,通常都會例項化一個dao層的物件,然後透過物件來呼叫函式,而spring的控制反轉就是將這個物件配置到框架(也就是容器)中去,這時我們需要使用這個物件是就向容器去要這個物件而不是我們主動去建立一個,也就是說這個物件的控制權是交給了框架(也可以說交給了配置檔案),這就實現了控制反轉。其好處也是不言而喻,程式碼可讀性高,維護方便,結構清晰等等。

    DI(依賴注入):其實這個可以理解為有值的ioc,我們在配置檔案裡配置物件屬性的值,例如我們在配置一個user物件時,可以給它的age,name等屬性進行賦值,也可以將其他物件注入到User中,而這個方式也可以降低耦合度。

    Aop(面向切面):以前我們都是面向物件方式來程式設計的,面向切面可能比較陌生。面向切面其實我們也運用過,例如filter,所有的請求都透過過濾器,這就是面向切面,下面這張圖可以很好幫助我們理解這個思想。

    而spring中可以使用aop來進行事務管理,日誌等操作

    struts2:

    我們在傳統開發時,要建立大量的servlet,不好更改,更不好管理,而使用struts2就是使用一個前端控制器來管理所有的請求,對於管理和處理請求非常的方便。

    下面上兩張圖,對於理解原理很有幫助

    Hibernate:

    Hibernate是資料持久層的操作,也於傳統開發進行對比,原來在操作資料時需要寫大量的get和set方法獲取和更改資料,很是麻煩,而使用Hibernate可以完全使用物件的方式來操作,程式碼簡潔高效便於開發。

    Hibernate的原理基於資料的三大狀態,下面是在我部落格上寫過的,截兩張圖說明一下原理。

    然後就是Hibernate的一級快取,這個也比較好理解,一級快取就是將資料放入快取區(記憶體),當我們兩次查詢同一條資料時,第二次就不會執行查詢語句,直接從快取中調取,這就很大的提高了執行效率。

    最後就是快照區,Hibernate內建一個快照區,當我們將資料存入一級快取時,也會將資料存入快照區一份,當我們commit()提交事務時,快照區和一級快取會進行比較,如果不同就會將資料更新。

    不管是學框架還是學語言學底層結構對於理解很有幫助,如果對於這些原理不太能看懂的話可以先看看影片寫一些demo學著用用,有了一定了解後再去剖析原理。

  • 5 # 三體藍色空間號

    還SSH三大框架,是從火星來的吧?你在簡歷上敢寫熟悉或精通SSH三大框架,估計人家技術面試官直接丟了。告訴你,現在就Struts在中國,基本沒有新專案用,老專案都不常見,都被改造完了;Hibernate估計還有一點,主要老專案居多或沿用之前產品,如果是新開發產品,不太可能用Hibernate。

    現在最火的是springboot,整個就包括了spring,springvmc,資料庫用mybatis,就是SSM,當然springboot和SSM的關係,其實就是簡化這三者的配合。我現在回到甲方了,公司很多新的專案,基本上也是springboot為主,或招標技術說明裡,要求採用最新springboot,支援微服務,分散式。

  • 6 # 千鋒武漢

    最近幾年Java一直名列最受歡迎的程式語言榜前,而在Java開發中Struts、Hibernate和Spring這三流行框架常常起了關鍵作用。因此本文將對比這三種Java流行框架,分析它們的產生和各自的優缺點。瞭解了這些,學習起來也更得心應手!

    一、Struts、Hibernate和Spring的產生

    1、Struts

    傳統的Java Web應用程式是採用JSP+Servlet+Javabean來實現的,這種模式實現了最基本的MVC分層,使的程式結構分為幾層,有負責前臺展示的JSP、負責流程邏輯控制的Servlet以及負責資料封裝的Javabean。但是這種結構仍然存在問題:如JSP頁面中需要使用<%%>符號嵌入很多的Java程式碼,造成頁面結構混亂,Servlet和Javabean負責了大量的跳轉和運算工作,耦合緊密,程式複用度低等等。

    為了解決這些問題,出現了Struts框架,它是一個完美的MVC實現,它有一箇中央控制類(一個Servlet),針對不同的業務,我們需要一個Action類負責頁面跳轉和後臺邏輯運算,一個或幾個JSP頁面負責資料的輸入和輸出顯示,還有一個Form類負責傳遞Action和JSP中間的資料。JSP中可以使用Struts框架提供的一組標籤,就像使用HTML標籤一樣簡單,但是可以完成非常複雜的邏輯。從此JSP頁面中不需要出現一行<%%>包圍的Java程式碼了。

    2、Hibernate

    可是所有的運算邏輯都放在Struts的Action裡將使得Action類複用度低和邏輯混亂,所以通常人們會把整個Web應用程式分為三層,Struts負責顯示層,它呼叫業務層完成運算邏輯,業務層再呼叫持久層完成資料庫的讀寫。

    使用JDBC連線來讀寫資料庫,我們最常見的就是開啟資料庫連線、使用複雜的SQL語句進行讀寫、關閉連線,獲得的資料又需要轉換或封裝後往外傳,這是一個非常煩瑣的過程。

    這時出現了Hibernate框架,它需要你建立一系列的持久化類,每個類的屬性都可以簡單的看做和一張資料庫表的屬性一一對應,當然也可以實現關係資料庫的各種表件關聯的對應。當我們需要相關操作是,不用再關注資料庫表。我們不用再去一行行的查詢資料庫,只需要持久化類就可以完成增刪改查的功能。使我們的軟體開發真正面向物件,而不是面向混亂的程式碼。我的感受是,使用Hibernate比JDBC方式減少了80%的程式設計量。

    3、Spring

    現在我們有三個層了,可是每層之間的呼叫是怎樣的呢?比如顯示層的Struts需要呼叫一個業務類,就需要new一個業務類出來,然後使用;業務層需要呼叫持久層的類,也需要new一個持久層類出來用。透過這種new的方式互相呼叫就是軟體開發中最糟糕設計的體現。簡單的說,就是呼叫者依賴被呼叫者,它們之間形成了強耦合,如果我想在其他地方複用某個類,則這個類依賴的其他類也需要包含。程式就變得很混亂,每個類互相依賴互相呼叫,複用度極低。如果一個類做了修改,則依賴它的很多類都會受到牽連。 為此,出現Spring框架。

    Spring的作用就是完全解耦類之間的依賴關係,一個類如果要依賴什麼,那就是一個介面。至於如何實現這個介面,這都不重要了。只要拿到一個實現了這個介面的類,就可以輕鬆的透過xml配置檔案把實現類注射到呼叫介面的那個類裡。所有類之間的這種依賴關係就完全透過配置檔案的方式替代了。所以Spring框架最核心的就是所謂的依賴注射和控制反轉。

    現在的結構是,Struts負責顯示層,Hibernate負責持久層,Spring負責中間的業務層,這個結構是目前國內最流行的Java Web應用程式架構了。另外,由於Spring使用的依賴注射以及AOP(面向方面程式設計),所以它的這種內部模式非常優秀,以至於Spring自己也實現了一個使用依賴注射的MVC框架,叫做Spring MVC,同時為了很好的處理事物,Spring集成了Hibernate,使事物管理從Hibernate的持久層提升到了業務層,使用更加方便和強大。

    二、Struts、Hibernate和Spring的優點

    1、struts

    為了更詳細地闡述現代軟體工程師廣泛使用的Java框架,這裡我們為大家介紹ApacheStruts1的後續版本Struts2。Struts2用於構建當代JavaEEWeb應用程式。Apache軟體基金會為開發人員提供了一個廣泛的工具,用於建立企業級面向Web的應用程式,開發過程的最佳化貫徹始終,甚至連後期維護也囊括其中,到最終點最佳化開發過程以及後期維護。如果您在為高負載系統(如廣播門戶)發愁,那麼Struts將會是你的不二選擇。

    由於Struts2實現了Action類(普通POJO物件),所以測試編寫程式碼所需的工作量較少。使用框架API,耦合變得更容易,有助於調整攔截器。

    2、Hibernate

    Hibernate是一個開放原始碼的物件關係對映框架,它對JDBC進行了非常輕量級的物件封裝,使得Java程式設計師可以隨心所欲的使用物件程式設計思維來操縱資料庫。

    Hibernate可以應用在任何使用JDBC的場合,既可以在Java的客戶端程式實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。

    大多數開發機構經常採取建立各自獨立的資料持久層。一旦底層的資料結構發生改變,那麼修改應用的其餘部分使之適應這種改變的代價將是十分巨大的。Hibernate適時的填補了這一空白,它為Java應用提供了一個易用的、高效率的物件關係對映框架。hibernate是個輕量級的永續性框架,功能卻非常豐富。

    雖然Hibemate不在RebelLabs的排行榜中,但它仍是值得一提的Java框架。這個對映Java框架解決了物件和關係不匹配的問題,採用持續的資料庫訪問操作來代替高層次的物件處理功能。每個企業的應用程式都是不同的,所以Hibernate配備了一個強大啊的功能套件,幫助後端開發人員微調資料訪問層。這是一個高階的ORM框架,允許您對Java物件(實體)執行資料庫操作,利用Hibernate快取將資料從Java環境持久化到資料庫是一個持久化的概念。

    3、Spring

    它是一個開源的專案,而且目前非常活躍;它基於IoC(Inversion of Control,反向控制)和AOP的構架多層j2ee系統的框架,但它不強迫你必須在每一層 中必須使用Spring,因為它模組化的很好,允許你根據自己的需要選擇使用它的某一個模組;它實現了很優雅的MVC,對不同的資料訪問技術提供了統一的 介面,採用IoC使得可以很容易的實現bean的裝配,提供了簡潔的AOP並據此實現Transcation Managment,等等。

    Spring以絕對優勢登頂不是沒有理由的,它之所以能夠成為最知名的Java框架,主要是因為:

    1.使用POJO簡化測試資料的注入。

    2.增強的模組化,使程式碼擁有更好的可讀性。

    3.不同模組之間解耦合。

    4.靈活應用依賴注入(DI)。

    三、Struts、Hibernate和Spring的的缺點

    1、struts

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

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

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

    2、Hibernate

    它限制大家所使用的物件模型。(例如,一個永續性類不能對映到多個表)其獨有的介面和可憐的市場份額也讓人不安,儘管如此,Hibernate 還是以其強大的發展動力減輕了這些風險。其他的開源永續性框架也有一些,不過都沒有 Hibernate 這樣有市場衝擊力。

    3、Spring

    使用人數不多、jsp中要寫很多程式碼

  • 7 # 萌新程式設計師

    Struts、Hibernate這三個框架別去學了,浪費時間,建議你去學springMvc、Mybatis這二個框架,mybatis框架是資料庫持久化框架,SpringMvc是前端控制器用來分發請求和處理請求。現在的企業大部分都是用的SSM,只有部分老專案用的是SSH。其次新手的話首先要重視java基礎,不要只學了點java的基本語法就去研究框架原始碼,因為很難看懂,只有java基礎學紮實了,看框架原始碼才能駕輕就熟。當然,你不去看原始碼也可以,學會用也是可以的。我在談一下學習這三個框架的基本方法,第一Spring要學透,多去網上找關於Spring的影片,網上有很多,弄清Spring的基本原理和底層原理,SpringMvc和Mybatis網上也有很多學習資料,可以去看。這二個框架學起來不難。

  • 8 # 千鋒頭號粉絲

    Java是世界第一程式語言,這已經達成共識,是毋庸置疑的真理。框架是程式設計師們必學的知識點,而且是十分重要的應用。在Java學習中框架是很重要的,框架不但能夠幫助咱們迅速的進行開發工作,更能簡化工作步驟,提升工作效率,一個封裝好的框架會提升很高的開發效率。今天千鋒杭州Java培訓小編就來說一說,剛接觸Java的初學者該如何去學習框架部分的內容。

    什麼是Java框架?

    所謂的Java框架,簡單理解是一個可複用的設計構件,它規定了應用的體系結構,闡明瞭整個設計、協作構件之間的依賴關係、責任分配和控制流程,表現為一組抽象類以及其例項之間協作的方法,它為構件複用提供了上下文關係。說到這裡Java的框架就很像生活中的“模子”一樣,可以使工作大大加速時間。

    1、Spring框架是什麼?

    Spring是一個開源框架,Spring是於2003年興起的一個輕量級的Java開發框架,它是為了解決企業應用開發的複雜性而建立的。

    2、Spring的特點有哪些?

    方便解耦,簡化開發 (高內聚低耦合)Spring就是一個大容器,可以將所有物件建立和依賴關係維護,交給Spring管理;Spring提供面向切面程式設計,可以方便地實現對程式進行許可權攔截;Spring內部提供了對各種優秀框架的直接支援。可謂是使用起來特別便利了。

    3、如何去學習Spring?

    學好一個框架之前,對於Java的基礎知識,肯定是要有所瞭解的,至於如何去了解和學習,本網站的知識就夠大家學習了。對於Spring來說,首先你得會用,你需要了解一下Spring的基本寫法和概念,對其中比較重點的兩大核心IOC、AOP重點學習。現在大部分用到Spring的都只是在用SpringMvc這一塊而已,對於其中的bean、核心都不是很瞭解,當你瞭解Spring的常規用法之後,需要去深入底層,瞭解一下核心內容的實現原理。畢竟脫離不開Java。然後就要去研究Spring更別的框架的整合。

    對於不瞭解行業的初學者來說,最重要的就是與同行業的人多交流,尤其是非常懂這個行業的人才。你對這個行業瞭解的資訊越多,越是有利於你頭腦中有一個清晰的概念和思路,你就會自行去思考。一點一點的積攢知識,最後你也可以成為你當初羨慕別的程式設計師一樣的程式設計師。

    如果說你也想要學習Java技術的話,千鋒杭州Java培訓機構永遠是你堅強的後盾。千鋒杭州Java培訓課程內容緊貼主流網際網路公司小前臺、大中臺的戰略,以培養 Java 大中臺研發工程師為目標。嚴格把控技術的前瞻性,讓學員在學習期間可以接觸如 Redis ElasticSearch 的 Java API 的選型、分散式事務技術:TCC-Transaction/TX-LCN、OAuth 協議第三方認證、JWT 令牌校驗使用者許可權、Netty 實現億級流量的網路通訊、分散式任務 Elastic-Job、等企業應用最廣泛、代表未來發展方向的技術,讓學員畢業之後可以無縫對接真實工作需求。

  • 9 # TrickCat

    1.Spring 屬於主流開發技術,適合新人快速融入,同時它自身的設計概念也非常優秀.

    2.Struts 不推薦學習,除非專案需要可到時候查詢資料,新人不推薦學習它.

    3.Hibernate 屬於 ORM,推薦新手學習,但不推薦著重學習.更推薦 mybatis.

  • 10 # 爆笑奧斯古

    個人建議,新手的話就根據網上的教程分別進行兩兩整合、寫個有頁面輸入的增刪改查。再三個一起整合,再寫個頁面輸入的增刪改查,實際操作比閱讀效果更佳。另外學習mybatis和springMVC也是同理。實際進行一遍編寫之後,再去了解他的深層次內容。

    PS:struts目前的新手不建議學習,因為比較古老實際的開發中運用比較少。建議學習springmvc或者struts2(struts2和struts內容還是有很大的差異的)

    如果需要簡單的教程原始碼的話可以關注私聊我

  • 11 # jesbing

    望聞問切,不過這個過程一定要結合實踐,思考和不恥下問也很重要,這些框架已經高度封裝了,並且開放給開發者呼叫的API都非常簡易,上手極快,他們就像一個超級智慧的工具箱一樣都是開箱即用的,不斷做一些實際的專案取得經驗值自然就會懂得更多的原理了。

  • 中秋節和大豐收的關聯?
  • 組裝蘋果手機和原裝的區別是什麼?