rose框架學習總結

BruceZhang發表於2015-10-30

rose框架學習總結


rose框架為paoding rose框架

具體可見https://code.google.com/p/paoding-rose/


1   對rose框架的整體認識

1.1B/S web開發

 我們所做的web開發是基於HTTP的應用服務開發,主要由兩部分組成:瀏覽器+服務端

 大致流程為:瀏覽器向服務端傳送HTTP請求,獲取伺服器IP,建立TCP連線,傳送請求

 伺服器偵聽請求,偵聽到請求,建立起連線,處理然後返回響應訊息 


 1.2Rose框架

 初始化:

Tomcat啟動時,會讀取配置檔案,進行服務的初始化工作 

而對於rose,會進行兩個主要的初始化工作:

一個是:對於各個要使用的Bean進行例項化。包括controller、dao等

 另一個是:構建匹配樹。這是rose解析使用者請求並進行匹配處理的基礎 


rose框架裡面包含的思想:

 資源封裝:對底層資源的封裝,開發者不用考慮servlet實現,doget\dopost,資料庫連線等底層實現,可以更加專注於業務邏輯的分析和處理

 分層設計:rose框架本身就包含了分層的概念,資源封裝,通過提供介面

       我們在開發的時候也應該注意分層的概念,合理設計。頁面,controller,service,jade層間設計與關聯

 匹配機制:rose匹配樹,實際為所定義的controller URL樹。客戶請求及響應實為與相關的controller間的互動 


Rose執行機制:

Rose解析客戶的請求地址,從匹配樹中尋找匹配的controller

尋找到相匹配的controller,如若存在攔截器註解,則還會先進行攔截器的處理,然後再傳給controller

如果在匹配樹中無法再到相匹配的controller,則會返回404的錯誤 


 IOC、依賴注入概念:

基本概念:程式執行過程中,當需要用到相關的物件時,動態的注入該物件,來執行物件方法,改變物件屬性。

具體怎麼例項化這個物件,物件生命週期的管理等,均由框架來自動管理

 而Rose提供了非常便利的@ 註解使用方式,讓開發者可以方便的使用相關的類及類方法 

 這裡的IOC概念,我覺得其實是對java垃圾回收的延伸

因為有垃圾回收的特性,才能夠使物件生命週期的自動管理得以實現

  

小結:Rose框架本身維護著一個主‘程式/執行緒’,在初始化階段會例項化相關的物件。

然後執行過程通過對客戶端請求地址的解析,呼叫相匹配的物件方法進行處理,而這部分的實現程式碼則由框架進行封裝維護

開發者只需要根據業務開發實現相關功能的類即可(封裝)

  

2   基於rose框架的開發

 2.1web開發------web服務端開發

     我們所開發的web服務主要是服務端的服務,其包括三個部分:

     Views:使用者提交請求,同時呈現響應資訊:jsp

    業務邏輯處理:controller、service  

    資料持久化:mysql、jade

  

Rose框架其實是一套規則,我們就是利用這套規則,來進行快速高效的web服務開發 

(1)controller bean的定義規則:

1需在controllers package下進行controller類的定義

2controller類都需要以controller為字尾

(2)資料持久化:

資料庫的操作採用rose jade 

使用規則:

1定義資料庫操作的DAO介面,並使用@Dao標註

2使用@SQL標註並定義相關的sql語句作為該註解的值

3定義相關的sql方法介面作為呼叫實體


與匹配相關的問題

rose在執行過程中,客戶請求處理首要過程就是進行對請求地址的解析 

在開發中常出現匹配異常:

可以注意是否定義相對應的get 或 post的controller方法

是否定義與url相對應的controller或者方法 

開發過程:

通過使用@Path @Get @Post可以對controller類的url地址進行設定

@get @post則可以配置相關get post方法

注意引數獲取的對應url地址


 2.2 controller的深入

對於互動,即在與頁面端的資料傳輸中:

Controller是在方法中通過@Param 引數的方式來獲取提交的資料,或者可以在方法中通過getParameter的方法來獲取

頁面端向後端傳遞資料的方式有兩種:

1在對映地址上直接傳遞資料

2可以通過表單等方式傳遞到對應變數中,如果傳遞的是bean資料,頁面傳遞的資料會自動封裝到bean裡

Controller要返回相關的資料,則通過Invocation變數進行傳輸

可以採用addModel和setAuttribute的方法


 Controller功能分析:

根據rose匹配執行的機制,我們知道,controller其實是直接與使用者進行互動的

獲取使用者提交的資料,同時返回響應的資訊

因此,在設計controller bean的時候則要符合業務邏輯處理,即controller間的職責需要明確 ,一個controller對應一個業務處理塊 

Controller主要是獲取頁面提交資料,返回響應資訊,作為一個資訊的中轉站

業務邏輯的處理可以由service層進行處理,並由controller進行呼叫


 定義各個業務邏輯處理的service類,具體的編寫規則:

1定義service類介面

2定義service類的實現

3在applicationContext  XML檔案配置service bean,包括名字,實現類地址

4在要運用的類bean上標註@Autowired註解,則rose框架會自動例項化注入該物件


other question

對於資料庫的操作,要注意sql語句的設計

不要把業務邏輯的處理帶到sql語句中

Sql語句要原子化,業務處理由負責業務邏輯處理的service層進行考慮