1. 程式人生 > >SSH框架學習總結

SSH框架學習總結

SSH不是一個框架,而是多個框架(struts+spring+hibernate)的整合,是目前較流行的一種Web應用程式開源整合框架,用於構建靈活、易於擴充套件的多層Web應用程式。

整合SSH框架的系統從職責上分為四層:表示層、業務邏輯層、資料持久層和域模組層(實體層)。

Struts作為系統的整體基礎架構,負責MVC的分離,在Struts框架的模型部分,控制業務跳轉,利用Hibernate框架對持久層提供支援Spring一方面作為一個輕量級的IoC容器,負責查詢、定位、建立和管理物件及物件之間的依賴關係,另一方面能使StrutsHibernate更好地工作。

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的基本執行流程

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的區別

三、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框架搭建的例項,點選即可下載

開發環境搭建,參照我的另一篇部落格

[html] view plaincopyprint?在CODE上檢視程式碼片派生到我的程式碼片
  1.  一些說明:  
  2. 索要程式碼的郵箱,我基本上都發過了,如果有漏發,請聯絡我。  
  3. 還是希望大家去csdn下載頁去下載。如果速度慢,可以去這裡http://pan.baidu.com/s/1eQh7FXo  
  4. 開發環境配置。http://blog.csdn.net/shan9liang/article/details/8807784  
  5. 在war中,找到application-common.xml。修改資料來源,指定自己的資料庫即可。專案部署後,會自動對映表。  
  6. <!--配資料來源 -->
  7. <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"
  8. destroy-method="close">
  9. <propertyname="driverClassName"value="oracle.jdbc.driver.OracleDriver"/>
  10. <propertyname="url"value="jdbc:oracle:thin:@localhost:1521:orcl"/>
  11. <propertyname="username"value="ssh"/>
  12. <propertyname="password"value="ssh"/>
  13. </bean>
  14. 以上是oracle的配置。  
  15. 如果使用其他資料庫,請在lib目錄下,加入驅動包。並修改資料來源。  
  16. 強烈建議:  
  17. https://code.csdn.net/shan9liang/tgb  
  18. 這是在CSDN CODE託管的,採用ssh搭建的一個考勤管理系統,maven專案,比原來那個更規範了,建議用這個,而且我會持續更新,逐漸加入各種主流框架,相信我。  
  19. 。不過不是eclipse專案,需要手工匯入eclipse,最近特喜歡用intellij。建議直接用git clone。  

相關推薦

SSH框架學習總結

SSH不是一個框架,而是多個框架(struts+spring+hibernate)的整合,是目前較流行的一種Web應用程式開源整合框架,用於構建靈活、易於擴充套件的多層Web應用程式。 整合SSH框架的系統從職責上分為四層:表示層、業務邏輯層、資料持久層和域模組層(實

SSH框架學習------struts2(一)

str struts2 oct 簡單 src package efi struts2配置 html 1.總的目錄 2.所有程序 1)index.jsp很簡單 <%@ page language="java" contentType="text/html; chars

SSH框架學習------struts2前後臺傳值(二)

sts put ret req extends imp tps str rri struts2的Action類一般都會繼承(extends)ActionSupport類(Action類,即實現action的類)1.前傳後:jsp裏<input type="text"

ssh隧道 學習總結

nag 實驗環境 ssh 遠程 本地 機器 原理 火墻 ssh連接 mage SSH本地端口轉發個人理解就是端口轉發,將TCP端口的網絡數據通過ssh連接轉發。並提供相應的加密和解密服務。主要用於目標服務器因防火墻或者別的原因無法直接訪問,只能由於同一個局域網內的機器訪問,

Apache的DBUtils框架學習總結

今天一直在學習使用alibaba開發的資料庫連線池技術,按照教程試了好久都有問題,一直搞到晚上才找出問題所在,下面先分享一下今天找到的一篇很有用的部落格: 點選跳轉原部落格 我自己的問題出在配置檔案的格式上,如下 這個屬性一定要單獨寫一行,不要直接跟在URL資料庫名稱後面,否則

Spring框架學習總結

單獨使用 可維護 ava 設置 允許 servlet容器 spec 學習 ogr 1. 什麽是Spring框架?   1.1 概念     SpringFrameWork是輕量級容器,它可以使用Struts和webwork等眾多的web應用程序結合使用,也可以單獨使用。  

SSH框架學習(三)——struts整合spring

SSH框架學習(三)——struts整合spring 建立包結構 struts整合spring 建立提交頁面 編寫domain 編寫dao 編寫service 編寫action 配置applicationCo

SSH框架學習(二)——引入框架所需配置檔案

SSH框架學習(二)——引入框架所需配置檔案 struts2配置檔案 hibernate配置檔案 spring配置檔案 struts2配置檔案 struts2的配置檔案有: 1、web.xml:配置核心過濾器 2、struts.xml:

SSH框架學習(一)——匯入框架所需jar包

SSH框架學習(一)——匯入框架所需jar包 一、建立一個web專案 二、匯入Struts2的jar包 三、匯入Hibernate的jar包 四、匯入Spring的jar包 IOC開發: AOP開發: 五、引入整合

JAVA學習之——SSH框架學習路線,思維腦圖。

        對於即將畢業的我,其實有著各種各樣的焦慮,焦慮到經常失眠,就會去想,畢業之後我該做什麼,是從事軟體行業還是專升本;暑假的時候我在成都待了一個月,瞭解了一些公司,在Java程式設計師招聘這塊,幾乎是不招女生,也可以說是選擇這個專業的女生也特別的少,原因大家都是一

pytest介面自動化測試框架學習總結

入職已經1個月多了,前段時間一個緊急的專案,用緊急的手段做成介面自動化,框架用的是jmeter+ant+Jenkins,這個框架的優點就是上手快,寫用例快,總之就是越快越好!明天開始新的專案,估計又是996,抽空把今天學習的pytest框架一些知識做下總結: 1,Assert就是斷言,每個測試用

SSH框架學習之Spring ---- 4、Spring的事務管理和jdbcTemplate

本節講的是spring對dao層的封裝,之前可能有更好的做法,但是要知道spring也提供了這種技術。 本節的主要內容是: 1、spring的jdbcTemplate操作(實現事務crud操作) 2、spring配置連線池 (1)配置c3p0連線池 (2)service和dao注

SSH框架學習之Spring ---- 3、Spring封裝的監聽器和log4j的用法

第一部分:監聽器 問題所在: action呼叫service、service呼叫dao。每次訪問action的時候,都要建立一次物件,且載入一次配置檔案,這顯得很耗費資源。 底層解決方案 僅在伺服器啟動的時候,建立物件載入檔案,通過在底層使用監聽器、servletContex

SSH框架學習之Spring ---- 2、認識AOP ! 警告,前方增強怪!

一、AOP底層分析 需求:根據客戶需要,當前的Dao.class中的add()方法,在呼叫之前需要列印一條"開始列印"語句。 以往的做法: 動add的程式碼,該怎麼改就怎麼改。這其實是不符合設計模式的,對於業務的拓展不修改原來的程式碼,這就是AOP思想。 概念 AOP啥意

SSH框架學習之Spring ----1、Spring入門和IOC

一、 spring概述 開源的輕量級框架(不依賴很多其他東西–輕量級) 兩部分核心 aop 面向切面程式設計:擴充套件功能不是修改原始碼來實現 ioc 控制反轉:把物件的建立交給spring,通過配置代替之前的new物件操作。

Java IO框架學習總結

Java流操作有關的類或介面: Java流類圖結構: 流的概念和作用 流是一組有順序的,有起點和終點的位元組集合,是對資料傳輸的總稱或抽象。即資料在兩裝置間的傳輸稱為流,流的本質是資料傳輸,根據資料傳輸特性將流抽象為各種類,方便更直觀的進行資料操作

Struts2框架學習總結(從入門到精通)

文章目錄 一、Struts2入門 struts2概述 struts2入門案例 struts2底層執行過程 struts2相關配置 struts2的核心配置檔案struts.xml struts2常量配

LR效能測試框架學習總結

效能目的:使用起來速度快,不崩,穩定 效能分類: 常規效能測試--響應時間、響應速度----正常工作,你的速度有多快 負載測試---持續加壓,目的是找到崩潰的臨界點,目的是使用者使用時能不觸碰到此臨界點---不斷增加工作量使工作飽和度不斷增加,你什麼時候撐不住了 壓力測試-

jQuery框架學習總結

一、jQuery的下載與使用 下載:http://jquery.com/download/ 使用:<script src ="jquery.min.js"></script> 二、jQuery選擇器 基本選擇器 選擇器 功能描述 示例 * 匹配所有元

JAVA集合框架學習總結

做一個JAVA簡單的集合框架的知識總結,只是單純的知識點記錄和自己的表達,更深入或具體的只能自己去查API或原始碼了,以後如果有其他想法再回來補充修正,有錯誤之處請指教。 java集合框架主要分為實現了Collection介面的List和Set、對映介面Map。