




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
軟件三大框架技術(shù)寶典軟件三大框架技術(shù)寶典軟件三大框架技術(shù)寶典xxx公司軟件三大框架技術(shù)寶典文件編號:文件日期:修訂次數(shù):第1.0次更改批準(zhǔn)審核制定方案設(shè)計(jì),管理制度strutshibernatespring面試題收藏1Action是不是線程安全的如果不是有什么方式可以保證Action的線程安全如果是,說明原因不是線程安全的。只要不申明類變量就可以保證線程安全。因?yàn)橹淮嬖谝粋€(gè)Action實(shí)例,所有線程會共享變量。聲明局部變量,或者擴(kuò)展RequestProcessor,讓每次都創(chuàng)建一個(gè)Action,或者在spring中用scope="prototype"來管理,分析一下struts是如何實(shí)現(xiàn)MVC的m:JavaBean或結(jié)合EJB組件或者pojo構(gòu)成c:ActionServlet、action來實(shí)現(xiàn)v:一組JSP文件及其標(biāo)簽構(gòu)成。中的幾個(gè)關(guān)鍵對象的作用(說說幾個(gè)關(guān)鍵對象的作用)Action:控制器類,ActionForm:表單對象,DynaValidatorForm:動態(tài)form,ActonMapping:配置文件中action節(jié)點(diǎn)的信息......4.說說AOP和IOC的概念以及在spring中是如何應(yīng)用的AOP:面向切面編程,ioc:依賴注入;聲明式事務(wù)和編程式事務(wù)積極一些通用部分有哪幾種查詢數(shù)據(jù)的方式hql查詢,sql查詢,qbc條件查詢()和get()的區(qū)別hibernate對于load方法認(rèn)為該數(shù)據(jù)在數(shù)據(jù)庫中一定存在,可以放心的使用代理來延遲加載,load()默認(rèn)支持延遲加載,在用到對象中的其他屬性數(shù)據(jù)時(shí)才查詢數(shù)據(jù)庫,但是萬一數(shù)據(jù)庫中不存在該記錄,只能拋異常ObjectNotFoundEcception;所說的load方法拋異常是指在使用該對象的數(shù)據(jù)時(shí),數(shù)據(jù)庫中不存在該數(shù)據(jù)時(shí)拋異常,而不是在創(chuàng)建這個(gè)對象時(shí)。由于session中的緩存對于hibernate來說是個(gè)相當(dāng)廉價(jià)的資源,所以在load時(shí)會先查一下session緩存看看該id對應(yīng)的對象是否存在,不存在則創(chuàng)建代理(load時(shí)候之查詢一級緩存,不存在則創(chuàng)建代理)。get()首先會在一級緩存找數(shù)據(jù),沒有就去二級緩存找,沒有就去數(shù)據(jù)庫找,沒有就返回null;而對于get方法,hibernate一定要獲取到真實(shí)的數(shù)據(jù),否則返回null。簡單地說:如果查詢不到數(shù)據(jù)load()會拋異常,get()會返回null。7.談?wù)刪ibernate的延遲加載和openSessionInView延遲加載要在session范圍內(nèi),用到的時(shí)候再加載;openSessionInBiew是在web層寫了一個(gè)filter來打開和關(guān)閉session,這樣就表示在一次request過程中session一直開著,保證了延遲加載在session中的這個(gè)前提。的事務(wù)有幾種方式?談?wù)剆pring事務(wù)的隔離級別和傳播行為。spring事務(wù)分兩種形式,聲明式事務(wù)和編程式事務(wù),spring提供了一個(gè)事務(wù)的接口PaltformTractionManager接口,針對不同的事務(wù),spring進(jìn)行了不同的實(shí)現(xiàn),對hibernate事務(wù)的實(shí)現(xiàn)HIbernateTractionManager,對JDBC的JdbcTractionManager,DataSourceTractionManager以及JdoTractionManager。接口platformTractionManager提供了3個(gè)方法,獲取事務(wù),提交和回滾的方法。隔離級別:-DEFAULT使用數(shù)據(jù)庫默認(rèn)的隔離級別default-READ_UNCOMMITTED會出現(xiàn)臟讀,不可重復(fù)讀和幻影讀問題read_uncommitted-READ_COMMITTED會出現(xiàn)重復(fù)讀和幻影讀read_committed-REPEATABLE_READ會出現(xiàn)幻影讀repeatable_read-SERIALIZABLE最安全,但是代價(jià)最大,性能影響極其嚴(yán)重serializable和傳播行:-REQUIRED存在事務(wù)就融入該事務(wù),不存在就創(chuàng)建事務(wù)required-SUPPORTS存在事務(wù)就融入事務(wù),不存在則不創(chuàng)建事務(wù)supports-MANDATORY存在事務(wù)則融入該事務(wù),不存在,拋異常mandatory-REQUIRES_NEW總是創(chuàng)建新事務(wù)requires_new-NOT_SUPPORTED存在事務(wù)則掛起,一直執(zhí)行非事務(wù)操作not_supported-NEVER總是執(zhí)行非事務(wù),如果當(dāng)前存在事務(wù)則拋異常nerver-NESTED嵌入式事務(wù)nested中的update()和saveOrUpdate()的區(qū)別.saveOrUpdate()做下面的事:如果對象已經(jīng)在本session中持久化了,不做任何事如果另一個(gè)與本session關(guān)聯(lián)的對象擁有相同的持久化標(biāo)識(identifier),拋出一個(gè)異常如果對象沒有持久化標(biāo)識(identifier)屬性,對其調(diào)用save()如果對象的持久標(biāo)識(identifier)表明其是一個(gè)新實(shí)例化的對象,對其調(diào)用save()如果對象是附帶版本信息的(通過<version>或<timestamp>)并且版本屬性的值表明其是一個(gè)新實(shí)例化的對象,save()它。否則update()這個(gè)對象對多種ORM框架提供了很好的支持,簡單描述在Spring中使用Hibernate的方法,并結(jié)合事務(wù)管理。(常用)getHiberanteTemplate里面提供了save,update,delete,find等方法。簡單說一個(gè):如果配置了聲明式事務(wù),當(dāng)執(zhí)行g(shù)etHibernateTemplate的各種方法的時(shí)候,事務(wù)會自動被加載如果沒有配置事務(wù),那么以上操作不會真正的被同步到數(shù)據(jù)庫,除非配置了hibernate的autocommit=true(續(xù))Hibernate工作原理原理:1.讀取并解析配置文件(config=newConfiguration().configura();2.讀取并解析映射信息,創(chuàng)建SessionFactoryfactory=();3.打開SesssionSessionsession=();4.創(chuàng)建事務(wù)Transationtx=();5.持久化操作6.提交事務(wù)();();()等7.關(guān)閉Session8.關(guān)閉SesstionFactory為什么要用:1.對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼。2.Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡化DAO層的編碼工作3.hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性。4.hibernate的性能非常好,因?yàn)樗莻€(gè)輕量級框架。映射的靈活。它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。2.Hibernate是如何延遲加載?1.Hibernate2延遲加載實(shí)現(xiàn):a)實(shí)體對象b)集合(Collection)2.Hibernate3提供了屬性的延遲加載功能當(dāng)Hibernate在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒有存在內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時(shí),對象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。3.Hibernate中怎樣實(shí)現(xiàn)類之間的關(guān)系(如:一對多、多對多的關(guān)系)類與類之間的關(guān)系主要體現(xiàn)在表與表之間的關(guān)系進(jìn)行操作,它們都是對象進(jìn)行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one、one-to-many、many-to-many、4.說下Hibernate的緩存機(jī)制1.內(nèi)部緩存存在Hibernate中又叫一級緩存,屬于應(yīng)用事物級緩存,如session是一級緩存2.二級緩存:如sessionFactory是二級緩存a)應(yīng)用及緩存b)分布式緩存條件:數(shù)據(jù)不會被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)頻繁使用、非關(guān)鍵數(shù)據(jù)c)第三方緩存的實(shí)現(xiàn)5.Hibernate的查詢方式Sql、Criteria,objectcomptositionHql:1、屬性查詢2、參數(shù)查詢、命名參數(shù)查詢3、關(guān)聯(lián)查詢4、分頁查詢5、統(tǒng)計(jì)函數(shù)6.如何優(yōu)化Hibernate?1.使用雙向一對多關(guān)聯(lián),不使用單向一對多2.靈活使用單向一對多關(guān)聯(lián)3.不用一對一,用多對一取代4.配置對象緩存,不使用集合緩存5.一對多集合使用Bag,多對多集合使用Set6.繼承類使用顯式多態(tài)7.表字段要少,表關(guān)聯(lián)不要怕多,有二級緩存撐腰7.Struts工作機(jī)制為什么要使用Struts工作機(jī)制:Struts的工作流程:在web應(yīng)用啟動時(shí)就會加載初始化ActionServlet,ActionServlet從文件中讀取配置信息,把它們存放到各種配置對象當(dāng)ActionServlet接收到一個(gè)客戶請求時(shí),將執(zhí)行如下流程.-(1)檢索和用戶請求匹配的ActionMapping實(shí)例,如果不存在,就返回請求路徑無效信息;-(2)如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中;-(3)根據(jù)配置信息決定是否需要表單驗(yàn)證.如果需要驗(yàn)證,就調(diào)用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的ActuibErrors對象,就表示表單驗(yàn)證成功;-(5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個(gè)Action,如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法;-(6)Action的execute()方法返回一個(gè)ActionForward對象,ActionServlet在把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP組件;-(7)ActionForward對象指向JSP組件生成動態(tài)網(wǎng)頁,返回給客戶;為什么要用:JSP、Servlet、JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂,所以在此之上,我們需要一個(gè)規(guī)則、一個(gè)把這些技術(shù)組織起來的規(guī)則,這就是框架,Struts便應(yīng)運(yùn)而生。基于Struts開發(fā)的應(yīng)用由3類組件構(gòu)成:控制器組件、模型組件、視圖組件8.Struts的validate框架是如何驗(yàn)證的?在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調(diào)用。9.說下Struts的設(shè)計(jì)模式MVC模式:web應(yīng)用程序啟動時(shí)就會加載并初始化ActionServler。用戶提交表單時(shí),一個(gè)配置好的ActionForm對象被創(chuàng)建,并被填入表單相應(yīng)的數(shù)據(jù),ActionServler根據(jù)文件配置好的設(shè)置決定是否需要表單驗(yàn)證,如果需要就調(diào)用ActionForm的Validate()驗(yàn)證后選擇將請求發(fā)送到哪個(gè)Action,如果Action不存在,ActionServlet會先創(chuàng)建這個(gè)對象,然后調(diào)用Action的execute()方法。Execute()從ActionForm對象中獲取數(shù)據(jù),完成業(yè)務(wù)邏輯,返回一個(gè)ActionForward對象,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指定的jsp組件,ActionForward對象指定的jsp生成動態(tài)的網(wǎng)頁,返回給客戶。10.spring工作機(jī)制及為什么要用?mvc請所有的請求都提交給DispatcherServlet,它會委托應(yīng)用系統(tǒng)的其他模塊負(fù)責(zé)負(fù)責(zé)對請求進(jìn)行真正的處理工作。查詢一個(gè)或多個(gè)HandlerMapping,找到處理請求的Controller.請請求提交到目標(biāo)Controller進(jìn)行業(yè)務(wù)邏輯處理后,會返回一個(gè)ModelAndView查詢一個(gè)或多個(gè)ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象6.視圖對象負(fù)責(zé)渲染返回給客戶端。為什么用:{AOP讓開發(fā)人員可以創(chuàng)建非行為性的關(guān)注點(diǎn),稱為橫切關(guān)注點(diǎn),并將它們插入到應(yīng)用程序代碼中。使用AOP后,公共服務(wù)(比如日志、持久性、事務(wù)等)就可以分解成方面并應(yīng)用到域?qū)ο笊希瑫r(shí)不會增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性。IOC允許創(chuàng)建一個(gè)可以構(gòu)造對象的應(yīng)用環(huán)境,然后向這些對象傳遞它們的協(xié)作對象。正如單詞倒置所表明的,IOC就像反過來的JNDI。沒有使用一堆抽象工廠、服務(wù)定位器、單元素(singleton)和直接構(gòu)造(straightconstruction),每一個(gè)對象都是用其協(xié)作對象構(gòu)造的。因此是由容器管理協(xié)作對象(collaborator)。Spring即使一個(gè)AOP框架,也是一IOC容器。Spring最好的地方是它有助于您替換對象。有了Spring,只要用JavaBean屬性和配置文件加入依賴性(協(xié)作對象)。然后可以很容易地在需要時(shí)替換具有類似接口的協(xié)作對象讀取并解析配置文件2.讀取并解析映射信息,創(chuàng)建SessionFactory3.打開Sesssion4.創(chuàng)建事務(wù)Transation5.持久化操作6.提交事務(wù)7.關(guān)閉Session8.關(guān)閉SesstionFactory為什么要用:1.對JDBC訪問數(shù)據(jù)庫的代碼做了封裝,大大簡化了數(shù)據(jù)訪問層繁瑣的重復(fù)性代碼。2.Hibernate是一個(gè)基于JDBC的主流持久化框架,是一個(gè)優(yōu)秀的ORM實(shí)現(xiàn)。他很大程度的簡化DAO層的編碼工作3.hibernate使用Java反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性。的性能非常好,因?yàn)樗莻€(gè)輕量級框架。映射的靈活性很出色。它支持各種關(guān)系數(shù)據(jù)庫,從一對一到多對多的各種復(fù)雜關(guān)系。2.Hibernate是如何延遲加載?
1.Hibernate2延遲加載實(shí)現(xiàn):a)實(shí)體對象b)集合(Collection)2.Hibernate3提供了屬性的延遲加載功能當(dāng)Hibernate在查詢數(shù)據(jù)的時(shí)候,數(shù)據(jù)并沒有存在與內(nèi)存中,當(dāng)程序真正對數(shù)據(jù)的操作時(shí),對象才存在與內(nèi)存中,就實(shí)現(xiàn)了延遲加載,他節(jié)省了服務(wù)器的內(nèi)存開銷,從而提高了服務(wù)器的性能。3.Hibernate中怎樣實(shí)現(xiàn)類之間的關(guān)系(如:一對多、多對多的關(guān)系)類與類之間的關(guān)系主要體現(xiàn)在表與表之間的關(guān)系進(jìn)行操作,它們都市對對象進(jìn)行操作,我們程序中把所有的表與類都映射在一起,它們通過配置文件中的many-to-one、one-to-many、many-to-many、4.說下Hibernate的緩存機(jī)制1.內(nèi)部緩存存在Hibernate中又叫一級緩存,屬于應(yīng)用事物級緩存2.二級緩存:a)應(yīng)用及緩存b)分布式緩存條件:數(shù)據(jù)不會被第三方修改、數(shù)據(jù)大小在可接受范圍、數(shù)據(jù)更新頻率低、同一數(shù)據(jù)被系統(tǒng)頻繁使用、非關(guān)鍵數(shù)據(jù)c)第三方緩存的實(shí)現(xiàn)5.Hibernate的查詢方式Sql、Criteria,tcomptositionHql:1、屬性查詢2、參數(shù)查詢、命名參數(shù)查詢3、關(guān)聯(lián)查詢4、分頁查詢5、統(tǒng)計(jì)函數(shù)6.如何優(yōu)化Hibernate?
1.使用雙向一對多關(guān)聯(lián),不使用單向一對多2.靈活使用單向一對多關(guān)聯(lián)3.不用一對一,用多對一取代4.配置對象緩存,不使用集合緩存5.一對多集合使用Bag,多對多集合使用Set6.繼承類使用顯式多態(tài)7.表字段要少,表關(guān)聯(lián)不要怕多,有二級緩存撐腰7.Struts工作機(jī)制為什么要使用Struts工作機(jī)制:Struts的工作流程:在web應(yīng)用啟動時(shí)就會加載初始化ActionServlet,ActionServlet從文件中讀取配置信息,把它們存放到各種配置對象當(dāng)ActionServlet接收到一個(gè)客戶請求時(shí),將執(zhí)行如下流程.-(1)檢索和用戶請求匹配的ActionMapping實(shí)例,如果不存在,就返回請求路徑無效信息;-(2)如果ActionForm實(shí)例不存在,就創(chuàng)建一個(gè)ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中;-(3)根據(jù)配置信息決定是否需要表單驗(yàn)證.如果需要驗(yàn)證,就調(diào)用ActionForm的validate()方法;-(4)如果ActionForm的validate()方法返回null或返回一個(gè)不包含ActionMessage的ActuibErrors對象,就表示表單驗(yàn)證成功;-(5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個(gè)Action,如果相應(yīng)的Action實(shí)例不存在,就先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法;-(6)Action的execute()方法返回一個(gè)ActionForward對象,ActionServlet在把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP組件;-(7)ActionForward對象指向JSP組件生成動態(tài)網(wǎng)頁,返回給客戶;為什么要用:JSP、Servlet、JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強(qiáng)大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂,所以在此之上,我們需要一個(gè)規(guī)則、一個(gè)把這些技術(shù)組織起來的規(guī)則,這就是框架,Struts便應(yīng)運(yùn)而生。基于Struts開發(fā)的應(yīng)用由3類組件構(gòu)成:控制器組件、模型組件、視圖組件8.Struts的validate框架是如何驗(yàn)證的?
在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調(diào)用。9.說下Struts的設(shè)計(jì)模式MVC模式:web應(yīng)用程序啟動時(shí)就會加載并初始化ActionServler。用戶提交表單時(shí),一個(gè)配置好的ActionForm對象被創(chuàng)建,并被填入表單相應(yīng)的數(shù)據(jù),ActionServler根據(jù)文件配置好的設(shè)置決定是否需要表單驗(yàn)證,如果需要就調(diào)用ActionForm的Validate()驗(yàn)證后選擇將請求發(fā)送到哪個(gè)Action,如果Action不存在,ActionServlet會先創(chuàng)建這個(gè)對象,然后調(diào)用Action的execute()方法。Execute()從ActionForm對象中獲取數(shù)據(jù),完成業(yè)務(wù)邏輯,返回一個(gè)ActionForward對象,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指定的jsp組件,ActionForward對象指定的jsp生成動態(tài)的網(wǎng)頁,返回給客戶。10.spring工作機(jī)制及為什么要用?
請所有的請求都提交給DispatcherServlet,它會委托應(yīng)用系統(tǒng)的其他模塊負(fù)責(zé)負(fù)責(zé)對請求進(jìn)行真正的處理工作。查詢一個(gè)或多個(gè)HandlerMapping,找到處理請求的Controller.請請求提交到目標(biāo)Controller進(jìn)行業(yè)務(wù)邏輯處理后,會返回一個(gè)ModelAndView查詢一個(gè)或多個(gè)ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象6.視圖對象負(fù)責(zé)渲染返回給客戶端。為什么用:AOP讓開發(fā)人員可以創(chuàng)建非行為性的關(guān)注點(diǎn),稱為橫切關(guān)注點(diǎn),并將它們插入到應(yīng)用程序代碼中。使用AOP后,公共服務(wù)(比如日志、持久性、事務(wù)等)就可以分解成方面并應(yīng)用到域?qū)ο笊希瑫r(shí)不會增加域?qū)ο蟮膶ο竽P偷膹?fù)雜性。IOC允許創(chuàng)建一個(gè)可以構(gòu)造對象的應(yīng)用環(huán)境,然后向這些對象傳遞它們的協(xié)作對象。正如單詞倒置所表明的,IOC就像反過來的JNDI。沒有使用一堆抽象工廠、服務(wù)定位器、單元素(singleton)和直接構(gòu)造(straightconstruction),每一個(gè)對象都是用其協(xié)作對象構(gòu)造的。因此是由容器管理協(xié)作對象(collaborator)。Spring即使一個(gè)AOP框架,也是一IOC容器。Spring最好的地方是它有助于您替換對象。有了Spring,只要用JavaBean屬性和配置文件加入依賴性(協(xié)作對象)。然后可以很容易地在需要時(shí)替換具有類似接口的協(xié)作對象。Spring框架是一個(gè)分層架構(gòu),由7個(gè)定義良好的模塊組成。Spring模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理bean的方式,如圖1所示。組成Spring框架的每個(gè)模塊(或組件)都可以單獨(dú)存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。每個(gè)模塊的功能如下:核心容器:核心容器提供Spring框架的基本功能。核心容器的主要組件是BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory使用控制反轉(zhuǎn)(IOC)模式將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開。Spring上下文:Spring上下文是一個(gè)配置文件,向Spring框架提供上下文信息。Spring上下文包括企業(yè)服務(wù),例如JNDI、EJB、電子郵件、國際化、校驗(yàn)和調(diào)度功能。SpringAOP:通過配置管理特性,SpringAOP模塊直接將面向方面的編程功能集成到了Spring框架中。所以,可以很容易地使Spring框架管理的任何對象支持AOP。SpringAOP模塊為基于Spring的應(yīng)用程序中的對象提供了事務(wù)管理服務(wù)。通過使用SpringAOP,不用依賴EJB組件,就可以將聲明性事務(wù)管理集成到應(yīng)用程序中。SpringDAO:JDBCDAO抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯誤消息。異常層次結(jié)構(gòu)簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。SpringDAO的面向JDBC的異常遵從通用的DAO異常層次結(jié)構(gòu)。SpringORM:Spring框架插入了若干個(gè)ORM框架,從而提供了ORM的對象關(guān)系工具,其中包括JDO、Hibernate和iBatisSQLMap。所有這些都遵從Spring的通用事務(wù)和DAO異常層次結(jié)構(gòu)。SpringWeb模塊:Web上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文。所以,Spring框架支持與JakartaStruts的集成。Web模塊還簡化了處理多部分請求以及將請求參數(shù)綁定到域?qū)ο蟮墓ぷ鳌pringMVC框架:MVC框架是一個(gè)全功能的構(gòu)建Web應(yīng)用程序的MVC實(shí)現(xiàn)。通過策略接口,MVC框架變成為高度可配置的,MVC容納了大量視圖技術(shù),其中包括JSP、Velocity、Tiles、iText和POI。Spring框架的功能可以用在任何J2EE服務(wù)器中,大多數(shù)功能也適用于不受管理的環(huán)境。Spring的核心要點(diǎn)是:支持不綁定到特定J2EE服務(wù)的可重用業(yè)務(wù)和數(shù)據(jù)訪問對象。毫無疑問,這樣的對象可以在不同J2EE環(huán)境(Web或EJB)、獨(dú)立應(yīng)用程序、測試環(huán)境之間重用。內(nèi)容導(dǎo)航第1頁:Hibernate工作原理及用的理由(1)第2頁:Hibernate工作原理及用的理由(2)IOC和AOP控制反轉(zhuǎn)模式(也稱作依賴性介入)的基本概念是:不創(chuàng)建對象,但是描述創(chuàng)建它們的方式。在代碼中不直接與對象和服務(wù)連接,但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù)。容器(在Spring框架中是IOC容器)負(fù)責(zé)將這些聯(lián)系在一起。在典型的IOC場景中,容器創(chuàng)建了所有對象,并設(shè)置必要的屬性將它們連接在一起,決定什么時(shí)間調(diào)用方法。下表列出了IOC的一個(gè)實(shí)現(xiàn)模式。Spring框架的IOC容器采用類型2和類型3實(shí)現(xiàn)。面向方面的編程面向方面的編程,即AOP,是一種編程技術(shù),它允許程序員對橫切關(guān)注點(diǎn)或橫切典型的職責(zé)分界線的行為(例如日志和事務(wù)管理)進(jìn)行模塊化。AOP的核心構(gòu)造是方面,它將那些影響多個(gè)類的行為封裝到可重用的模塊中。AOP和IOC是補(bǔ)充性的技術(shù),它們都運(yùn)用模塊化方式解決企業(yè)應(yīng)用程序開發(fā)中的復(fù)雜問題。在典型的面向?qū)ο箝_發(fā)方式中,可能要將日志記錄語句放在所有方法和Java類中才能實(shí)現(xiàn)日志功能。在AOP方式中,可以反過來將日志服務(wù)模塊化,并以聲明的方式將它們應(yīng)用到需要日志的組件上。當(dāng)然,優(yōu)勢就是Java類不需要知道日志服務(wù)的存在,也不需要考慮相關(guān)的代碼。所以,用SpringAOP編寫的應(yīng)用程序代碼是松散耦合的。AOP的功能完全集成到了Spring事務(wù)管理、日志和其他各種特性的上下文中。IOC容器Spring設(shè)計(jì)的核心是包,它的設(shè)計(jì)目標(biāo)是與JavaBean組件一起使用。這個(gè)包通常不是由用戶直接使用,而是由服務(wù)器將其用作其他多數(shù)功能的底層中介。下一個(gè)最高級抽象是BeanFactory接口,它是工廠設(shè)計(jì)模式的實(shí)現(xiàn),允許通過名稱創(chuàng)建和檢索對象。BeanFactory也可以管理對象之間的關(guān)系。BeanFactory支持兩個(gè)對象模型。單態(tài)模型提供了具有特定名稱的對象的共享實(shí)例,可以在查詢時(shí)對其進(jìn)行檢索。Singleton是默認(rèn)的也是最常用的對象模型。對于無狀態(tài)服務(wù)對象很理想。原型模型確保每次檢索都會創(chuàng)建單獨(dú)的對象。在每個(gè)用戶都需要自己的對象時(shí),原型模型最適合。bean工廠的概念是Spring作為IOC容器的基礎(chǔ)。IOC將處理事情的責(zé)任從應(yīng)用程序代碼轉(zhuǎn)移到框架。正如我將在下一個(gè)示例中演示的那樣,Spring框架使用JavaBean屬性和配置數(shù)據(jù)來指出必須設(shè)置的依賴關(guān)系。BeanFactory接口因?yàn)槭且粋€(gè)簡單接口,所以可以針對各種底層存儲方法實(shí)現(xiàn)。最常用的BeanFactory定義是XmlBeanFactory,它根據(jù)XML文件中的定義裝入bean,如清單1所示。清單1.XmlBeanFactoryBeanFactoryfactory=newXMLBeanFactory(newFileInputSteam(""));在XML文件中定義的Bean是被消極加載的,這意味在需要bean之前,bean本身不會被初始化。要從BeanFactory檢索bean,只需調(diào)用getBean()方法,傳入將要檢索的bean的名稱即可,如清單2所示。清單2.getBean()MyBeanmybean=(MyBean)("mybean");每個(gè)bean的定義都可以是POJO(用類名和JavaBean初始化屬性定義)或FactoryBean。FactoryBean接口為使用Spring框架構(gòu)建的應(yīng)用程序添加了一個(gè)間接的級別。IOC示例理解控制反轉(zhuǎn)最簡單的方式就是看它的實(shí)際應(yīng)用。在對由三部分組成的Spring系列的第1部分進(jìn)行總結(jié)時(shí),我使用了一個(gè)示例,演示了如何通過SpringIOC容器注入應(yīng)用程序的依賴關(guān)系(而不是將它們構(gòu)建進(jìn)來)。我用開啟在線信用帳戶的用例作為起點(diǎn)。對于該實(shí)現(xiàn),開啟信用帳戶要求用戶與以下服務(wù)進(jìn)行交互:信用級別評定服務(wù),查詢用戶的信用歷史信息。遠(yuǎn)程信息鏈接服務(wù),插入客戶信息,將客戶信息與信用卡和銀行信息連接起來,以進(jìn)行自動借記(如果需要的話)。電子郵件服務(wù),向用戶發(fā)送有關(guān)信用卡狀態(tài)的電子郵件。三個(gè)接口對于這個(gè)示例,我假設(shè)服務(wù)已經(jīng)存在,理想的情況是用松散耦合的方式把它們集成在一起。以下清單顯示了三個(gè)服務(wù)的應(yīng)用程序接口。清單3.CreditRatingInterfacepublicinterfaceCreditRatingInterfacepublicbooleangetUserCreditHistoryInformation(ICustomeriCustomer);清單3所示的信用級別評定接口提供了信用歷史信息。它需要一個(gè)包含客戶信息的Customer對象。該接口的實(shí)現(xiàn)是由CreditRating類提供的。清單4.CreditLinkingInterfacepublicinterfaceCreditLinkingInterfacepublicStringgetUrl();publicvoidsetUrl(Stringurl);publicvoidlinkCreditBankAccount()throwsException;信用鏈接接口將信用歷史信息與銀行信息(如果需要的話)連接在一起,并插入用戶的信用卡信息。信用鏈接接口是一個(gè)遠(yuǎn)程服務(wù),它的查詢是通過getUrl()方法進(jìn)行的。URL由Spring框架的bean配置機(jī)制設(shè)置,我稍后會討論它。該接口的實(shí)現(xiàn)是由CreditLinking類提供的。清單5.EmailInterfacepublicinterfaceEmailInterfacepublicvoidsendEmail(ICustomeriCustomer);publicStringgetFromEmail();publicvoidsetFromEmail(StringfromEmail);publicStringgetPassword();publicvoidsetPassword(Stringpassword);publicStringgetSmtpHost();publicvoidsetSmtpHost(StringsmtpHost);publicStringgetUserId();publicvoidsetUserId(StringuserId);您正在閱讀:Hibernate、Spring和Struts工作原理及使用理由編輯推薦Hibernate框架如何實(shí)現(xiàn)ORMHibernate入門教程Hibernate關(guān)系映射詳解Hibernate結(jié)合MYSQL數(shù)據(jù)庫簡單教程四種流行的AJAX框架jQuery,Mootools,Dojo,ExtJS的對比AJAX是的基石,現(xiàn)在網(wǎng)上流行幾種開源的AJAX框架,比如:jQuery,Mootools,Dojo,ExtJS等等,那么我們到底在什么情況下該使用那個(gè)框架?以下是一組摘抄的數(shù)據(jù):
其中Prototype使用率最高,很大程度上是因?yàn)樗亲钤绯墒斓目蚣埽芏嘁郧霸陧?xiàng)目中采用,所以現(xiàn)在一直在用讓我們來看看選擇AJAX框架的基礎(chǔ):你的項(xiàng)目需求(即你需要哪些特性,例如是否要求做出精美的界面、特效或其它功能)是否支持A等級的瀏覽器(IE,Firefox等)文檔的質(zhì)量:是否完善(包含教程,API,代碼示例等)框架的可擴(kuò)展性如何為框架寫插件容易嗎你是否喜歡它的API的風(fēng)格?能大多程度上統(tǒng)一你的JavaScript代碼的風(fēng)格?框架大小(太大的框架導(dǎo)致用戶下載時(shí)間的延長)框架是否強(qiáng)迫你改變寫HTML的方式(Dojo就是這樣)代碼執(zhí)行速度:性能如何?代碼是否為模塊化(Mootools為高度模塊化)代碼可重用性如何一、jQuery主頁:設(shè)計(jì)思想簡潔的思想:幾乎所有操作都是以選擇DOM元素(有強(qiáng)大的Selector)開始,然后是對其的操作(Chaining等特性)。優(yōu)點(diǎn)小,壓縮后代碼只有20多k(無壓縮代碼94k)。Selector和DOM操作的方便:jQuery的Selector與mootools的比較,CSSSelector,XPathSelector(后已刪除)Chaining:總是返回一個(gè)jQuery對象,可以連續(xù)操作。文檔的完整,易
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產(chǎn)公司元旦活動方案
- 房產(chǎn)推介會活動方案
- 房產(chǎn)足球活動方案
- 房地產(chǎn)企業(yè)助農(nóng)活動方案
- 房地產(chǎn)冰淇淋活動方案
- 江蘇南京金陵中學(xué)2024~2025學(xué)年高二下冊期末考試數(shù)學(xué)試題含解析
- 社區(qū)參與意識培養(yǎng)策略考核試卷
- 農(nóng)村環(huán)境治理與生態(tài)補(bǔ)償機(jī)制考核試卷
- 體育賽事廣告與粉絲互動設(shè)計(jì)考核試卷
- 護(hù)理團(tuán)隊(duì)災(zāi)害應(yīng)對與緊急救援能力培訓(xùn)考核試卷
- 2025年醫(yī)療美容行業(yè)私密整形技術(shù)與市場規(guī)范報(bào)告
- 2025至2030中國海洋生物技術(shù)行業(yè)市場發(fā)展現(xiàn)狀及競爭格局與投資發(fā)展報(bào)告
- 教師學(xué)雷鋒管理制度
- 湖南2025年湖南江華瑤族自治縣招聘184名事業(yè)單位工作人員筆試歷年參考題庫附帶答案詳解
- 2025至2030中國化妝品檢測行業(yè)發(fā)展分析及競爭策略與趨勢預(yù)測報(bào)告
- 盤古java面試題及答案
- 2024中儲糧考試題庫與答案
- 2025年個(gè)人租房合同范本下載
- T/CAMIR 002-2022企業(yè)技術(shù)創(chuàng)新體系建設(shè)、管理與服務(wù)要求
- 多模態(tài)學(xué)習(xí)算法的實(shí)證分析及其未來發(fā)展趨勢
- 口腔合伙股東協(xié)議書
評論
0/150
提交評論