標籤:下一代 映射關係 ring template 通過 手工 介面 串連數 url
前言
最近剛開始學習Java後端的一些知識,很多不懂的或者要學習的記錄在這裡,希望自己學習的同時也能協助一些別人,如果有什麼不對的地方或者需要補充的也歡迎大家留言,我也會繼續學習和修改的!
標籤
一、spring
Spring是一個解決了許多在J2EE開發中常見的問題的強大架構。 Spring提供了管理業務對象的一致方法並且鼓勵了注入對介面編程而不是對類編程的良好習慣。Spring的架構基礎是基於使用JavaBean屬性的Inversion of Control容器。然而,這僅僅是完整圖景中的一部分:Spring在使用IoC容器作為構建完關注所有架構層的完整解決方案方面是獨一無二的。 Spring提供了唯一的資料訪問抽象,包括簡單和有效率的JDBC架構,極大的改進了效率並且減少了可能的錯誤。Spring的資料訪問架構還整合了hibernate和其他O/R mapping解決方案。Spring還提供了唯一的交易管理抽象,它能夠在各種底層交易管理技術,例如JTA或者JDBC事務提供一個一致的編程模型。Spring提供了一個用標準Java語言編寫的AOP架構,它給POJOs提供了聲明式的交易管理和其他企業事務--如果你需要--還能實現你自己的aspects。這個架構足夠強大,使得應用程式能夠拋開EJB的複雜性,同時享受著和傳統EJB相關的關鍵服務。Spring還提供了可以和IoC容器整合的強大而靈活的MVC Web架構。
二、STRUCTS
Struts是一個基於Sun J2EE平台的MVC架構,主要是採用Servlet和JSP技術來實現的。由於Struts能充分滿足應用開發的需求,簡單易用,敏捷迅速,在過去的一年中頗受關注。Struts把Servlet、JSP、自訂標籤和資訊資源(message resources)整合到一個統一的架構中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間,所以說Struts是一個非常不錯的應用程式框架。
三、Hibernate
Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式實用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任。映射很簡單呀,就是頁面的映射呀,多做點練習就會了。
JAVA三大架構用來做WEN應用。 struts主要負責展示層的顯示 spring利用它的IOC和AOP來處理控制業務(負責對資料庫的操作) hibernate主要是資料的持久化到資料庫 在用jsp的servlet做網頁開發的時候有個web.xml的對應檔,裡面有個mapping的標籤就是用來做檔案對應的。 當你在瀏覽器上輸入URL地址的時候,檔案就會根據你寫的名稱對應到一個java檔案,根據java檔案裡編寫的內容顯示在瀏覽器上,就是一個網頁,所以網頁名字是隨便寫的,隨便起的名字,不管你起的是. PHP.jsp .do還是其他的什麼都對應這個java檔案,這個java檔案裡的代碼進行什麼操作就幹什麼,顯示一句話還是串連資料庫還是跳轉到其他頁面等等,這個java檔案把資料進行封裝起到安全和便於管理的作用。其實這個java檔案編譯過來是.class的一個位元組碼檔案,沒有那麼一個類似html嵌入標籤和代碼的網頁檔案。他與jsp檔案區別就是jsp把代碼嵌入到html標籤中。 還有servlet或者struts中html表單的action中的提交名稱對應一個java檔案,struts一般是.do的,都和上面一樣是映射。
SSH架構詳細說明
首先,SSH不是一個架構,而是多個架構(struts+spring+hibernate)的整合,是目前較流行的一種Web應用程式開源整合架構,用於構建靈活、易於擴充的多層Web應用程式。
整合SSH架構的系統從職責上分為四層:展示層、商務邏輯層、資料持久層和域模組層(實體層)。
Struts作為系統的整體基礎架構,負責MVC的分離,在Struts架構的模型部分,控制業務跳轉,利用Hibernate架構對持久層提供支援。Spring一方面作為一個輕量級的IoC容器,負責尋找、定位、建立和管理對象及對象之間的依賴關係,另一方面能使Struts和Hibernate更好地工作。
由SSH構建系統的基本商務程序是:
1、在展示層中,首先通過JSP頁面實現互動介面,負責傳送請求(Request)和接收響應(Response),然後Struts根據設定檔(struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。
2、在業務層中,管理服務元件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協作對象資料處理(DAO)組件完成商務邏輯,並提供交易處理、緩衝池等容器組件以提升系統效能和保證資料的完整性。
3、在持久層中,則依賴於Hibernate的對象化映射和資料庫互動,處理DAO組件請求的資料,並返回處理結果。
採用上述開發模型,不僅實現了視圖、控制器與模型的徹底分離,而且還實現了商務邏輯層與持久層的分離。這樣無論前端如何變化,模型層只需很少的改動,並且資料庫的變化也不會對前端有所影響,大大提高了系統的可複用性。而且由於不同層之間耦合度小,有利於團隊成員並行工作,大大提高了開發效率。
下面我們再詳細看一下組成SSH的這三個架構
一、Spring
1、什麼是Spring?
簡單來說,Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器架構。
2、Spring的特性
具體自己百度吧
所有Spring的這些特徵使你能夠編寫更乾淨、更可管理、並且更易於測試的代碼
3、為什麼使用Spring?
Spring的以上特性使得開發人員使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。
二、Struts
1、什麼是Struts?
它通過採用 Java Servlet/JSP 技術,實現了基於Java EEWeb應用的MVC設計模式的應用程式框架,是MVC經典設計模式中的一個經典產品。
2、Struts1的核心構成
在 Struts1 中,由一個名為 ActionServlet 的 Servlet 充當 控制器(Controller)的角色,根據描述模型、視圖、控制器對應關係的 struts-config.xml 的設定檔,轉寄視圖(View)的請求,組裝響應資料模型(Model)。
在 MVC 的模型(Model)部分,經常劃分為兩個主要子系統(系統的內部資料狀態與改變資料狀態的邏輯動作),這兩個概念子系統分別具體對應 Struts 1裡的 ActionForm 與 Action 兩個需要繼承實現超類。在這裡,Struts 1可以與各種標準的資料訪問技術結合在一起,包括Enterprise Java Beans(EJB), JDBC 與 JNDI。
在 Struts 1的視圖(View) 端,除了使用標準的JavaServer Pages(JSP)以外,還提供了大量的標籤庫使用,同時也可以與其他表現層組件技術(產品)進行整合,比如 Velocity Templates,XSLT 等。
通過應用 Struts 的架構,終端使用者可以把大部分的關注點放在自己的商務邏輯(Action)與 映射關係的設定檔(struts-config.xml)中。
3、Struts1的基本執行流程
詳見《STRUTS基本工作流程》
4、什麼是struts2
Struts 2是Struts的下一代產品,是在 struts 1和WebWork的技術基礎上進行了合并的全新的Struts 2架構。其全新的Struts 2的體繫結構與Struts 1的體繫結構差別巨大。Struts 2以WebWork為核心,採用攔截器的機制來處理使用者的請求,這樣的設計也使得商務邏輯控制器能夠與ServletAPI完全脫離開,所以Struts 2可以理解為WebWork的更新產品
5、strut2的體繫結構
解析:
當Web容器收到請求(HttpServletRequest)它將請求傳遞給一個標準的的過濾鏈包括 流程(ActionContextCleanUp)過濾器,然後經過Other filters(SiteMesh ,etc),
接下來需要調用FilterDispatcher核心控制器,然後它調用ActionMapper確定請求那個Action,ActionMapper返回一個收集Action詳細資料的ActionMaping對象。
接下來FilterDispatcher將控制權委派給ActionProxy,ActionProxy調用組態管理員(ConfigurationManager) 從設定檔中讀取配置資訊(struts.xml),然後建立ActionInvocation對象,ActionInvocation在調用Action之前會依次的調用所用配置攔截器(Interceptor N) 一旦執行結果返回結果字串ActionInvocation負責尋找結果字串對應的(Result)然後執行這個Result Result會調用一些模版(JSP)
來呈現頁面,之後攔截器(Interceptor N)會在被執行(順序和Action執行之前相反)最後響應(HttpServletResponse)被返回在web.xml中配置的那些過濾器和(核心控制器)(FilterDispatcher)。
6、為什麼使用Struts?
首先,Struts 是MVC的一種實現,它將 Servlet和 JSP 標記(屬於 J2EE 規範)用作實現的一部分。Struts繼承了MVC的各項特性,並根據J2EE的特點,做了相應的變化與擴充,減弱了商務邏輯介面和資料介面之間的耦合,以及讓視圖層更富於變化
另外, struts具有頁面導航功能,使系統的脈絡更加清晰。通過一個設定檔,即可把握整個系統各部分之間的聯絡,這對於後期的維護有著莫大的好處。尤其是當另一批開發人員接手這個項目時,這種優勢體現得更加明顯。
7、 Struts1和Struts2的區別
詳見《Struts1 和 Struts2》
三、Hibernate
1、什麼是Hibernate?
Hibernate是一個開放原始碼的對象關係映射架構,它對JDBC進行了非常輕量級的對象封裝,使得Java程式員可以隨心所欲的使用對象編程思維來操縱資料庫。 Hibernate可以應用在任何使用JDBC的場合,既可以在Java的用戶端程式使用,也可以在Servlet/JSP的Web應用中使用,最具革命意義的是,Hibernate可以在應用EJB的J2EE架構中取代CMP,完成資料持久化的重任
2、Hibernate核心構成
具體就不展開了
3、Hibernate基本執行流程
為什麼使用Hibernate?
1. 對JDBC訪問資料庫的代碼做了封裝,大大簡化了資料訪問層繁瑣的重複性代碼。
2、Hibernate是一個優秀的ORM實現。他很大程度的簡化DAO層的編碼工作,將軟體開發人員從大量相同的資料持久層相關編程工作中解放出來,使開發更對象化了。
3、移植性好,支援各種資料庫,如果換個資料庫只要在設定檔中變換配置就可以了,不用改變hibernate代碼。
4、支援透明持久化,因為hibernate操作的是純粹的(pojo)java類,沒有實現任何介面,沒有侵入性。所以說它是一個輕量級架構。
最後附上SSH1和SSH2架構搭建的執行個體,點擊即可下載
SSH1架構搭建執行個體(spring2+struts1+hibernate3)採用舊版本,詳見代碼中注釋
SSH2架構搭建執行個體(spring3.2+strust2.3.4+hibernate4.2)全部採用最新版本,詳見代碼中注釋
開發環境搭建,參照另一篇部落格
《Win7(64) + eclipse(64)+ tomcat7(64)+ jdk7(64)開發環境配置》
[html] view plain copy
- 一些說明:
-
- 索要代碼的郵箱,我基本上都發過了,如果有漏發,請聯絡我。
-
-
- 還是希望大家去csdn下載頁去下載。如果速度慢,可以去這裡http://pan.baidu.com/s/1eQh7FXo
-
-
- 開發環境配置。http://blog.csdn.net/shan9liang/article/details/8807784
-
- 在war中,找到application-common.xml。修改資料來源,指定自己的資料庫即可。項目部署後,會自動對應表。
-
-
- <!--配資料來源 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
- destroy-method="close">
- <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
- <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
- <property name="username" value="ssh" />
- <property name="password" value="ssh" />
- </bean>
- 以上是oracle的配置。
- 如果使用其他資料庫,請在lib目錄下,加入驅動包。並修改資料來源。
- 強烈建議:
- https://code.csdn.net/shan9liang/tgb
- 這是在CSDN CODE託管的,採用ssh搭建的一個考勤管理系統,maven項目,比原來那個更規範了,建議用這個,而且我會持續更新,逐漸加入各種主流架構,相信我。
- 。不過不是eclipse項目,需要手工匯入eclipse,最近特喜歡用intellij。建議直接用git clone。
另附一個Eclipse搭建SSH(Struts2+Spring3+Hibernate3)架構項目教程的網址:
http://blog.csdn.net/yeohcooller/article/details/9316923
JAVA中SSH架構