框架學習:webWork框架和struts2框架的結構和分析
在上篇部落格中,我簡單的介紹了我們分層開發中每一層中擁有的框架,而且介紹了我常用的框架struts1的結構和原理分析,那麼今天我繼續介紹我熟悉的框架struts2的框架的結構和原理分析。
在說struts2框架之前,我要先介紹另外一個框架webwork框架,這個框架也是一個mvc的框架,這個框架的設計思路是採用攔截鏈將使用者的請求的資料轉發到Action中,並負責將Action的處理結果轉換成對使用者的響應。它的這種設計思路能夠和ServletAPI分離,鑑於我們的上篇部落格介紹的struts1的缺點,所以webwork框架解決了struts1的這個缺點。
我們來看一下webwork框架的結構圖:
有了這個流程圖,我就不給大家講解具體的原理流程了,它採用的是攔截鏈的機制,通過這些攔截鏈完成使用者的相應請求,從而與servletAPI分離,當與servlet分離開的時候,也就是表明和容器解耦了;另外,我們從結構圖中看到它的檢視模版有jsp、FreeMarker等等,它的表示層技術比struts1框架的飽滿許多。
所以,webwork框架解決了struts1框架存在的問題,而且它的設計思路是非常好的,鑑於此,struts2框架就在struts1框架的基礎上引入了webwork框架的設計思路應運而生了。所以我們就能夠發現struts2兼具struts1的特性而且通過引入webwork框架的設計思路解決了struts1的一些缺點。
struts2框架的大致的體系圖:
從圖中我們能夠看出它是引入的webwork框架的設計思路,而且它也是基於mvc的一個開源的框架。之後我們來說一下struts2框架的一個執行流程(流程圖和webwork框架非常類似):
- 瀏覽器傳送請求,通過幾層過濾器完成一些功能,之後到actionmapper中,之後將請求傳到核心控制器中
- 核心控制器filterDispatcher根據請求決定呼叫合適的Action
- 呼叫webwork的攔截器鏈自動請求通用功能,如校驗之類的操作
- 回撥action的execute方法,獲取使用者請求執行相應的業務邏輯
- 之後返回字串,匹配result,之後跳轉到相應的檢視或其他的文件
- 之後在執行相應的攔截器鏈自動請求功能,隨後轉到web客戶端。
這樣我們就對struts2框架的結構上的東西做了一個簡單的介紹。在上篇部落格講解了struts1框架,所以有必要在這裡對他倆進行一下對比(我僅僅總結了五條我認為比較重要的,以後如果發現其他的在隨時補充):
- 在Action實現類方面的對比(struts1的Action繼承action,struts2實現介面,也可以不實現,可以定製服務)
- 執行緒模式方面的對比(struts1存線上程安全問題,struts2不存在)
- ServletAPI依賴方面的對比(struts1依賴servletAPI,struts2不是)
- 可測性方面的對比(struts1難測試,依賴容器,struts2不是)
- 封裝請求引數的對比(struts1使用actionform;struts2直接寫到action,並且支援pojo物件)
這篇部落格就介紹到這裡,巨集觀上的學習以前一直做的不好,所以這段時間一直在解決這個學習上出現的問題,希望我的這些重構的框架學習部落格能夠對大家有所幫助。下節課我會繼續介紹我經常使用的框架的結構和執行流程的分析,敬請關注!
相關文章
- 框架學習:hibernate框架的結構和分析框架
- 框架學習:struts1框架的結構和分析框架
- 【Struts2框架學習】框架
- Struts2框架學習(一)框架
- Java之struts2框架學習Java框架
- 全面學習robotframework框架二:整體理解框架結構Framework框架
- Struts2(一) 學習興趣、框架簡介、框架優缺點框架
- struts2框架搭建學習遇到的問題框架
- JAVAEE框架學習——Struts2——Action API 使用Java框架API
- Struts2的框架框架
- 第0篇:學習資料結構和演算法的框架思維資料結構演算法框架
- Dubbo框架學習總結框架
- rose框架學習總結ROS框架
- 駁 《駁 《駁 《駁 《停止學習框架》》》》、《駁 《駁 《停止學習框架》》》、《駁 《停止學習框架》》、《停止學習框架》框架
- GoWeb框架Gin學習總結GoWeb框架
- Java Executor 框架學習總結Java框架
- 如何學習和利用深度學習演算法框架深度學習演算法框架
- ffmpeg框架結構框架
- 機器學習和深度學習的最佳框架大比拼機器學習深度學習框架
- 製造框架和使用框架是兩種不同的學問框架
- 如何學習或分析別人的框架?框架
- 使用框架和不使用框架的區別框架
- Hadoop框架:Yarn基本結構和執行原理Hadoop框架Yarn
- Flask框架和Django框架有什麼區別?詳細分析!Flask框架Django
- Struts2框架的基本使用框架
- 輕量級 Web 框架 Gin 結構分析Web框架
- OS 學習框架框架
- 停止學習框架框架
- Koa框架學習框架
- Httprunner框架學習HTTP框架
- ThinkPhP 框架學習PHP框架
- 前端學習框架前端框架
- Play框架學習框架
- 深度學習學習框架深度學習框架
- Netty 框架學習 —— EventLoop 和執行緒模型Netty框架OOP執行緒模型
- Flutter框架分析(一)-- 總覽和WindowFlutter框架
- 框架(Spring、Struts2和Hibernate三者)整合框架Spring
- 從零開始實現簡單 RPC 框架 1:RPC 框架的結構和設計RPC框架