更新時間:2019-12-20 14:08:18 來源:動力節點 瀏覽2415次
SSH三大框架的概述
SSH為 struts+spring+hibernate的一個集成框架,是目前較流行的一種Web應用程序開源框架。
集成SSH框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層(實體層),以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。
struts標簽庫:Struts2默認的表達式語言是OGNL(Object-Graph Navigation Language),通過它可以存取對象的任意屬性、調用對象的方法、遍歷整個對象的結構圖、實現字段類型轉換等功能。
JSP: HTML文件中插入Java程序段和JSP標記。
web.xml: Struts2核心過濾器和監聽器
struts.xml: 管理應用中的Action映射,及Action處理結果和物理資源之間的映射。
applicationContext.xml: 整合了struts和Hibernate。
.hbm.xml:O/R Mapping(Object Relational Mapping)映射文件,實體和表的映射關系通過XML來描述的文件。在項目啟動的時候加載到內存中。
PO:Persistent Object,持久化對象
整體的調用關系:JSP–Action–Service–DAO–PO–數據庫
什么是struts2
Struts2是一個基于MVC設計模式的Web應用控制層框架,功能就是完成jsp頁面和后臺java代碼的傳值和跳轉。
Struts2的運行原理
1:當前臺發送一個以規定后綴相同的請求時 如:.action struts核心控制器會對其進行過濾攔截 核心控制器StrutsPrepareAndExecuteFilter
2:核心控制器攔截請求后會根據請求的路徑找到對應的java代碼,通過路徑中的類名(!前的部分)匹配struts.xml中action標簽中的name屬性來找到具體訪問的類,!后的部分匹配類中的方法名
3:當java類中完成處理邏輯會返回一個字符串,根據字符串匹配struts.xml中result標簽的name屬性,然后跳轉到result標簽內容指定的頁面。
Spring
簡單來說,spring是一個輕量級的控制反轉(IOC)和面向切面(AOP)的容器框架。
◆ 輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。并且Spring所需的 處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地, Spring應用中的對象不依賴于Spring的特定類。
◆ 控制反轉——Spring通過一種稱作控制反轉(IOC)的技術促進了松 耦合。當應用了IOC,一個對象依賴的其它對象會通過被動的方式傳遞 進來,而不是這個對象自己創建或者查找依賴對象。 這也是說spring是非侵入式的,動態注入對象,讓一個對象的創建 不用new,可以自動生成,這就是利用JAVA里的反射,反射其實就是 在運行時動態的去創建、調用對象及其方法,spring就是在運行時,跟 xml spring的配置文件來動態的創建對象,和調用對象里面的方法 反射技術的使用使得我們不再像原始的工廠方法模式那樣創建對象。反 射可以非常靈活的根據類的名稱創建一個對象。所以spring只使用了 Prototype和Singleton這兩個基本的模式。
◆ 面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離 應用的業務邏輯與系統級服務(例如審計(auditing)和事務 (transaction)管理,主要實現對事務的管理)進行內聚性的開發,其 機理來自于代理模式。應用對象只實現它們應該做的——完成業務邏輯 ——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例 如日志或事務支持。
◆ 容器——Spring包含并管理應用對象的配置和生命周期,在這個意義上它是一種容器,你可以配置你的每個bean如何被創建——基于一個可配置原型(prototype),你的bean可以創建一個單獨的實例或者每次需要時都生成一個新的實例——以及它們是如何相互關聯的。然而,Spring不應該被混同于傳統的重量級的EJB容器,它們經常是龐大與笨重的,難以使用。Spring是一個容器,凡是在容器里的對象才會有Spring所提供的這些服務和功能。凡是在spring的配置文件里面配置了,才能被spring管理;并享用spring提供的服務 。
◆ 框架——Spring可以將簡單的組件配置、組合成為復雜的應用。在Spring中,應用對象被聲明式地組合,典型地是在一個XML文件里。Spring也提供了很多基礎功能(事務管理、持久化框架集成等等),將應用邏輯的開發留給了你。 所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測試的代碼。它們也為Spring中的各種模塊提供了基礎支持。
談Spring這個問題的時候,首先Spring中最為重要的無非就是IOC和AOP,而對IOC來講,你講一下IOC的定義,IOC就是說對象本身的創建不依賴應用本身,而是依賴于外部容器,如果沒有IOC那么我們在我們的業務類,要調用DAO的方法,那么不得不做的一個動作就是創建一個DAO的實現類的實例,而創建這個對象本身是跟業務無關的,而這樣違反了“高內聚,低耦合”,使類與類的聯系非常緊密了。即使你不用new,你使用工廠模式,使用單利模式,也跟上面說的效果是一樣的,而Spring本身就是一個大工廠,他幫我們造對象,幫我們管理bean對象,它幫我們注入我們所需的bean對象,這樣對于以后的維護來講,變的更為方便,也把與業務本身無關的東西提取出來了。體現了低耦合。而AOP本身就是一種思想,意為面向切面編程,而Spring對AOP做了部分實現,(舉例說明)如果沒有AOP,比如我們開發的系統中有發郵件,寫日志,可想而知,系統中發郵件,寫日志絕對的不是在一個地方用到,那么怎么辦,肯定是在業務中寫著重復的代碼,而且干著與業務無關的事情,也就是說讓發郵件,寫日志跟業務一起混合在一起,那么這樣肯定是不合理的。那么該怎么辦,因此Spring提供了AOP,在你想寫日志的方法給你切開,加入日志的操作,剛剛說spring是大工廠,那么對于spring的AOP來講,我更加喜歡把它比喻成化妝師,只有你讓spring幫你化妝,就能達到你意想不到的效果,總的來講spring的AOP技術,他幫我們做很多與業務無關的操作,讓業務層次更加清晰。
Spring AOP事務的描述:
在applicationContent.xml里通過aop:config里面先設定一個表達式,設定對service里那些方法 如:對add* ,delete*,update*等開頭的方法進行事務攔截。我們需要配置事務的傳播(propagation=“REQUIRED”)特性,通常把增,刪,改以外的操作需要配置成只讀事務(read-only=“true”).只讀事務可以提高性能。之后引入tx:advice,在tx:advice引用 transactionManager(事務管理),在事務管理里再引入sessionFactory,sessionFactory注入 dataSource,最后通過aop:config引入txAdvice。
事物的7種傳播特性
opropagation_requierd:如果當前沒有事務,就新建一個事務,如果已存在一個事務中,加入到這個事務中,這是最常見的選擇。
opropagation_supports:支持當前事務,如果沒有當前事務,就以非事務方法執行。
opropagation_mandatory:使用當前事務,如果沒有當前事務,就拋出異常。
opropagation_required_new:新建事務,如果當前存在事務,把當前事務掛起。
opropagation_not_supported:以非事務方式執行操作,如果當前存在事務,就把當前事務掛起。
opropagation_never:以非事務方式執行操作,如果當前事務存在則拋出異常。
opropagation_nested:如果當前存在事務,則在嵌套事務內執行。如果當前沒有事務,則執行與propagation_required類似的操作
Spring默認的事物傳播行為是propagation_requierd
以上就是動力節點Java培訓機構小編介紹的“2020年Java面試題框架部分集”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
相關推薦
最新最全java面試題及答案(初級到高級)
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習