搜尋
首頁Javajava教程ssh框架原理及流程是什麼

ssh框架原理及流程是什麼

Jul 25, 2019 pm 02:41 PM
javassh框架原理流程

ssh框架原理及流程是什麼

SSH(Struts2 Spring Hibernate)框架的項目,該架構主要分為三個層次:

( 1)Struts2:負責web層

(2)Spring:業務層的管理

(3)Hibernate:負責資料持久化

Struts2工作原理:

1.初始化一個指向servlet容器的請求。

2.請求經過web.xml中配置的過濾器過濾,FilterDispatcher(struts2控制器的核心)詢問ActionMapper是否需要呼叫某個Action來處理這個請求。如果ActionMapper決定需要呼叫某個Action,FilterDispatcher就把請求的處理方式交給ActionProxy。

3.ActionProxy透過設定檔Struts.xml設定檔找到需要呼叫的Action類別。

4.ActionProxy建立一個ActionInvocation實例,同時ActionInvocation透過代理模式呼叫Action。但在呼叫之前,ActionInvocation會根據配置載入Action相關的所有Interceptor(攔截器)。

5.Action執行完畢後,ActionInvocation負責根據struts.xml中的設定找到對應的回傳結果result。

即開發人員透過發送http請求,這個請求經過web.xml的過濾器過濾看看是否要呼叫某個action,如果有則在Struts.xml找到該請求的實作的方法,然後返回運行的結果。

相關推薦:《java開發教學

Hibernate工作原理:

1. 讀取並解析設定檔

2.讀取並解析映射訊息,建立SessionFactory 

3. 開啟Sesssion 

4.建立事務Transation 

##5. 持久化操作

6.提交交易 

7.關閉Session 

#8. 關閉SesstionFactory 

即透過spring管理的Hibernate初始化時載入了xxx.hbm.xml然後讀取解析映射訊息,創建了SessionFactory。然後打開session,透過session對事物進行操作並提交。最後關閉session,關閉SessionFactory。

Hibernate中bean 的三種狀態

Hibernate物件分為三種狀態:瞬時態(new 出來的或實例化時session無關的),持久性(session關聯)與遊離態(曾經與session關聯)。其中持久態的物件是PO,瞬時態、託管態的物件可作為VO。 (PO不應該直接用作v層)所以在使用中應該注意三態的轉化。

如:

在進行資料操作的一系列過程中,save或saveorupdate操作可以把瞬時態或遊離態的物件轉換成持久態,而delete或session的close 、flush等操作將會把session相關聯的持久態物件轉換成遊離態。

Hibernate物件的狀態和生命週期

使用new運算元初始化的物件是一個瞬時態的(Transient)(沒有任何跟資料庫表相關聯的行為,只要應用不再引用這些對象,它們的狀態就會丟失,並由垃圾回收機制回收);

瞬時態對象經過save(),saveOrUpdate會轉換成持久態,由session統一管理,持久態對象的操作與資料庫同步;

持久性物件經過evict(),close(),clear()等會轉換成遊離態,這時雖然被持久化,但是不在session快取中,透過lock(),update( ),saveOrUpdate又會轉換成持久態。透過get(),load(),find(),iterate()得到的物件直接就是持久態的。

Spring的工作原理:

在SSH框架中spring扮演了管理容器的角色。我們都知道Hibernate用來做持久層,因為它將JDBC做了一個很好的封裝,程式設計師在與資料庫進行互動時可以不用書寫大量的SQL語句。 Struts是用來做應用層的,它負責呼叫業務邏輯serivce層。

所以SSH框架的流程大致是:Jsp頁面----Struts------Service(業務邏輯處理類別)---Hibernate(左到右) 

struts負責控制Service(業務邏輯處理類別),從而控制了Service的生命週期,這樣層與層之間的依賴很強,屬於耦合。

這時,使用spring框架就起到了控制Action物件(Strus中的)和Service類別的作用,兩者之間的關係就鬆散了,Spring的Ioc機制(控制反轉和依賴注入)正是用在此。

控制反轉:就是由容器控製程式之間的(依賴)關係,而非傳統實作中,由程式碼直接操控。

依賴注入:元件之間的依賴關係由容器在運行期決定 ,由容器動態的將某種依賴關係注入到元件之中。

使用Spring的第二個好處(AOP應用):

交易的處理: 

在以往的JDBCTemplate 中交易提交成功,異常處理都是透過Try/Catch 來完成。 Spring容器整合了TransactionTemplate,它封裝了所有對事務處理的功能,包括異常時事務回滾,操作成功時資料提交等複雜業務功能。這都是由Spring 容器來管理,大大減少了程式設計師的程式碼量,也對交易有了很好的管理控制。 Hibernate中也有事務的管理,hibernate 中事務管理是透過SessionFactory 建立和維護Session 來完成。而Spring 對SessionFactory配置也進行了整合,不需要在透過hibernate.cfg.xml來設定SessionaFactory。

這樣的話就可以很好的利用Sping對事務管理強大功能。

避免了每次對資料操作都要現獲得Session實例來啟動交易/提交/回滾事務還有繁瑣的Try/Catch操作。

這些也就是Spring中的AOP(面向切面程式設計)機制很好的應用。一方面讓開發業務邏輯更清晰、專業分工更容易進行。

另一方面就是應用Spirng AOP隔離降低了程式的耦合性使我們可以在不同的應用中將各個切面結合起來使用大大提高了程式碼重用度。

以上是ssh框架原理及流程是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?May 02, 2025 am 12:25 AM

JVM通過字節碼解釋、平台無關的API和動態類加載實現Java的WORA特性:1.字節碼被解釋為機器碼,確保跨平台運行;2.標準API抽像操作系統差異;3.類在運行時動態加載,保證一致性。

Java的較新版本如何解決平台特定問題?Java的較新版本如何解決平台特定問題?May 02, 2025 am 12:18 AM

Java的最新版本通過JVM優化、標準庫改進和第三方庫支持有效解決平台特定問題。 1)JVM優化,如Java11的ZGC提升了垃圾回收性能。 2)標準庫改進,如Java9的模塊系統減少平台相關問題。 3)第三方庫提供平台優化版本,如OpenCV。

說明JVM執行的字節碼驗證的過程。說明JVM執行的字節碼驗證的過程。May 02, 2025 am 12:18 AM

JVM的字節碼驗證過程包括四個關鍵步驟:1)檢查類文件格式是否符合規範,2)驗證字節碼指令的有效性和正確性,3)進行數據流分析確保類型安全,4)平衡驗證的徹底性與性能。通過這些步驟,JVM確保只有安全、正確的字節碼被執行,從而保護程序的完整性和安全性。

平台獨立性如何簡化Java應用程序的部署?平台獨立性如何簡化Java應用程序的部署?May 02, 2025 am 12:15 AM

Java'splatFormIndepentEncealLowsApplicationStorunonAnyOperatingsystemwithajvm.1)singleCodeBase:writeandeandcompileonceforallplatforms.2)easileupdates:updatebybytecodeforsimultanane deployment.3)testOnOneOnePlatForforurouniverSalpeforuluniverSalpehavior formafforulululyiversalivernave.444.44.444

Java的平台獨立性如何隨著時間的流逝而發展?Java的平台獨立性如何隨著時間的流逝而發展?May 02, 2025 am 12:12 AM

Java的平台獨立性通過JVM、JIT編譯、標準化、泛型、lambda表達式和ProjectPanama等技術不斷增強。自1990年代以來,Java從基本的JVM演進到高性能的現代JVM,確保了代碼在不同平台的一致性和高效性。

在Java應用程序中緩解平台特定問題的策略是什麼?在Java應用程序中緩解平台特定問題的策略是什麼?May 01, 2025 am 12:20 AM

Java如何緩解平台特定的問題? Java通過JVM和標準庫來實現平台無關性。 1)使用字節碼和JVM抽像操作系統差異;2)標準庫提供跨平台API,如Paths類處理文件路徑,Charset類處理字符編碼;3)實際項目中使用配置文件和多平台測試來優化和調試。

Java的平台獨立性與微服務體系結構之間有什麼關係?Java的平台獨立性與微服務體系結構之間有什麼關係?May 01, 2025 am 12:16 AM

java'splatformentenceenhancesenhancesmicroservicesharchitecture byferingDeploymentFlexible,一致性,可伸縮性和便攜性。 1)DeploymentFlexibilityAllowsibilityAllowsOllowsOllowSorlowsOllowsOllowsOllowSeStorunonAnyPlatformwithajvM.2)penterencyCrossServAccAcrossServAcrossServiCessImplifififiesDeevelopmentandeDe

GRAALVM與Java的平台獨立目標有何關係?GRAALVM與Java的平台獨立目標有何關係?May 01, 2025 am 12:14 AM

GraalVM通過三種方式增強了Java的平台獨立性:1.跨語言互操作,允許Java與其他語言無縫互操作;2.獨立的運行時環境,通過GraalVMNativeImage將Java程序編譯成本地可執行文件;3.性能優化,Graal編譯器生成高效的機器碼,提升Java程序的性能和一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中