1. 程式人生 > >【MarketAnalysis總結】2.0搭建Spirng框架、SpringMVC框架以及對SSH框架的整合

【MarketAnalysis總結】2.0搭建Spirng框架、SpringMVC框架以及對SSH框架的整合

首先我先來介紹一下Spring框架,SpringMVC框架以及它們在本專案中的使用,再對搭建SSH框架的詳細過程進行說明。


1)   介紹Spring框架以及在本專案的使用

Spring是一個輕量級的應用開發框架,它幫我們管理物件及其依賴關係,還提供像通用日誌記錄、效能統計、安全控制、異常處理等面向切面的能力。它提供了與第三方資料訪問框架(如Hibernate)無縫整合以及一套Spring MVC框架,來方便web搭建 。在此,本專案採用的是SSH(SpringMVC、Spring、Hibernate)整合框架。

Spring框架的組成如下圖2.1,


圖2.1 Spring框架組成

Spring的關鍵模組主要是Ioc容器的依賴注入,以及Aop的面向切面模組。

  • Ioc容器負責例項化、定位、配置應用程式中的物件及建立這些物件間的依賴,把依賴關係、邏輯關係、配置等等,和類的具體實現分隔開來,前者對應xml檔案,後者對應Java檔案。
  • AOP 模組能夠將那些與業務無關,卻為業務模組所共同呼叫的邏輯或責任,例如事務處理、日誌管理、許可權控制等,封裝起來,便於減少系統的重複程式碼,降低模組間的耦合度,並有利於未來的可操作性和可維護性。

在本專案中,主要應用了Spring的Ioc容器、DAO、以及MVC。Ioc容器是Spring的核心,該容器裡存放著一個個Bean,本專案通過該容器把DAO、Hibernate以及Service層的依賴關係都集成於此。此外Hibernate是指對資料庫訪問控制進行整合的一個框架,由於不是我主負責這部分,在此不贅述。

2)   介紹SpringMVC框架以及在本專案中的使用

A.   SpringMVC框架是Spring提供的一個強大而靈活的web框架,它對應著本專案中的controller層。SpringMVC主要由DispatcherServlet、處理器對映、處理器(控制器)、檢視解析器、攔截器。它的三個核心是:

  • 處理器對映:選擇使用哪個控制器來處理請求,分發請求到某一個方法中去。
  • 檢視解析器:選擇結果應該如何渲染,可控制頁面跳轉。
  • 攔截器:對前端請求進行許可權校驗、身份校驗、合法性檢查、避免過量請求湧入等操作。

B.   此外,Spring的執行原理如下圖2.10


圖2.10 SpringMVC執行原理示意圖

A.   在本專案中的執行步驟如下:

a)   首先使用者傳送請求url,web容器根據“/”路徑對映到DispatcherServlet(因為url-pattern為/)進行處理;

b)   對springMVC-servlet.xml進行初始化,檢查會不會被攔截器攔截下來;若被攔截,對請求進行預處理,處理完過後決定對該請求是否放行,即是否讓該請求到達controller;

c)   通過component-scan來對controller的包進行註解掃描,以及DefaultAnnotationHandlerMapping與AnnotationMethodHandlerAdapter進行啟動註解功能,對controller進行掃描,找到url對應的控制器;

d)   根據url對映到controller對應的方法進行處理;

e)   處理完畢後,通過檢視解析器,根據路徑找到要返回的檢視,渲染並返回。

B.   對SpringMVC配置xml檔案後面會有論述,這裡介紹一下前端的請求url怎麼配置才能對映到對應處理該請求的控制器。這裡有兩種配置方法,分為註解法和非註解法:

  • 註解法

配置如圖2.11,@Controller寫在控制器對應的類的上方,即可表明該類為控制器,@RequestMapping的value屬性用來配置某url要對映的方法,如下圖,處理“/login”這個url請求對應的方法即為login();


圖2.11 註解法配置

每一個註解實則是一個bean,使用註解的優點是可以自動實現bean的依賴注入,無需手動配置bean,使用方便。缺點是不利於程式碼解耦,耦合度較高,而且會降低程式碼與依賴關係的可讀性。

  • 非註解法

配置如圖2.12,這種方法其實更接近本質,它其實是對上一種更深一步解析,因為每一個註解都對應著一個bean。而在這種方法中,就還原了這個bean,每一個url通過bean name來對映到class類中的方法。


圖2.12 非註解法配置

這種方法的優點是有利於程式碼解耦,降低耦合度,主張配置與程式碼分離,增加了依賴關係的可讀性,便於理解專案整體架構。缺點顯而易見,就是配置可能會比較繁瑣,使用起來沒有上一種方法方便。

在本專案中使用了第一種方法,即註解法。

3)   搭建SSH(SpringMVC+Spring+Hibernate)框架過程

搭建此SSH框架最關鍵是對三個配置檔案進行配置,如下圖2.2的web.xml、applicationContext.xml、springMVC-servlet.xml。

圖2.2 SSH框架配置圖

a)   web.xml

在此配置檔案中,主要是對spring框架配置監聽器以及Controller層的集中統一分發的分發器對每一個url請求都進行統一的分發。它的配置如圖2.3,


圖2.3 web.xml配置

監聽器、分發器分別對應這上圖的1、2+3。

b)   applicationContext.xml

該配置檔案是spring框架的核心配置檔案,主要用來配置Ioc容器的bean之間的依賴關係,進行依賴注入,每一個bean都對應這上面所陳述的一個類。

  • 整合hibernate

使用了兩個bean,如下圖2.4,


圖2.4 Ioc容器中的hibernate配置

主要使用了dataSource與sessionFactory兩個bean,把對資料庫連線等操作的依賴關係都集成於此。

  • 整合DAO

配置如下圖2.5,


圖2.5 DAO層的bean配置

這四個bean分別對應著DAO層的增刪改查的依賴。

  • 整合Service服務

這裡主要對所有Service層提供的服務進行整合,以便Controller使用Service層的服務時,可以從該容器中拿到對應的bean來獲取對應的服務。部分Service的bean配置如下圖2.6:


圖2.6 部分Service層的bean配置

c)   springMVC-servlet.xml

該配置檔案主要是對SpringMVC框架進行配置的核心檔案,對應著Controller層,主要是對controller和interceptor進行配置;

  • 配置註解掃描器

該配置主要是讓controller層接收來自前端的url請求,對映到對應的處理函式中,配置如圖2.7所示。


圖2.7 註解掃描器配置

  • 配置檢視解析器

檢視解析器主要是為了controller層能控制頁面跳轉而使用的,只要為其配置所需跳轉頁面的路徑即可,如圖2.8。


圖2.8 檢視解析器配置

配置攔截器

攔截器主要對應controller的interceptor層,這裡的配置所起作用是配置攔截器所要攔截的url,以及對攔截的這些url配置對應的類來處理,部分攔截器配置如圖2.9。


圖2.9 攔截器部分配置