首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JavaEE 應用框架筆記:青軟 S2SH (Struts2 + Spring + Hibernate) 學習路線圖

     編輯:Java 綜合教學

JavaEE 經典框架整合學習筆記:S2SH 架構

記錄《青軟 S2SH》教材核心知識點,涵蓋 Struts2、Spring、Hibernate 三大框架整合要點、配置細節與常見問題。雖然現代開發多用 Spring Boot + SpringMVC + MyBatis/JPA,但理解經典 S2SH 架構有助於掌握框架演進脈絡與企業級應用遷移。

三大框架定位

框架層級核心職責關鍵技術點
Struts2表現層 (MVC Controller)請求攔截、參數封裝、結果視圖分發、攔截器鏈Action、Result、Interceptor、OGNL、值棧
Spring業務層容器 (IoC/AOP)依賴注入、AOP 切面、事務管理、模板封裝 (JdbcTemplate, HibernateTemplate)Bean 定義、生命周期、循環依賴、@Transactional、AOP 代理
Hibernate持久層 (ORM)對象關係映射、Session 管理、HQL/Criteria 查詢、緩存 (一級/二級)、鎖機制映射配置、SessionFactory、延遲加載、N+1 問題、樂觀/悲觀鎖

核心整合架構

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  Struts2    │────▶│   Spring    │────▶│  Hibernate  │
│  Action     │     │  Service    │     │   DAO       │
└─────────────┘     └─────────────┘     └─────────────┘
      │                    │                    │
      ▼                    ▼                    ▼
  web.xml            applicationContext.xml   hibernate.cfg.xml
  struts.xml         事務配置                 映射文件 *.hbm.xml

關鍵整合配置點

1. Spring 管理 Struts2 Action



    
    
         
            /success.jsp
        
    


    

2. Spring 管理 Hibernate SessionFactory


    
    
    
    



    
    
        
            org.hibernate.dialect.MySQLDialect
            true
            update
        
    
    




    



3. Open Session In View 模式 (OSIV)



    openSessionInViewFilter
    org.springframework.orm.hibernate5.support.OpenSessionInViewFilter
    
        sessionFactoryBeanName
        sessionFactory
    


    openSessionInViewFilter
    /*

作用:延長 Session 生命周期至視圖渲染結束,解決延遲加載時無 Session 異常。注意:長事務風險、連接佔用久,高併發慎用。

常見坑點與解決

問題原因解決
Action 注入 Service 為 nullStruts2 默認自創 Action 實例配置 struts.objectFactory=spring、Action 定義為 prototype
懶加載失敗: no sessionSession 關閉後訪問代理集合OSIV Filter / fetch join / DTO 投影
事務不生效未配置事務管理器/註解驅動/代理模式檢查 @Transactional 位置、proxy-target-class
Hibernate 映射找不到映射文件路徑/名稱錯誤mappingLocations 用 classpath:*、檢查 .hbm.xml 部署
樂觀鎖失效版本字段未配置/未加鎖<version name="version" column="VERSION"/>

遷移現代化建議

  1. Struts2 → SpringMVC:註解式 Controller、RESTful 支持、無值棧 OGNL 安全隱患
  2. Hibernate → MyBatis/JPA:MyBatis SQL 可控、JPA 標準化、Spring Data JPA 開發效率高
  3. XML → 註解/配置類:@Configuration、@ComponentScan、@EnableTransactionManagement
  4. 整合 → Spring Boot:自動配置、Starter 依賴、內嵌容器、生產級監控
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved