JAVA-SSH面試題.doc_第1頁
JAVA-SSH面試題.doc_第2頁
JAVA-SSH面試題.doc_第3頁
JAVA-SSH面試題.doc_第4頁
JAVA-SSH面試題.doc_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

Java-SSH(MVC)1. 談?wù)勀鉳vc的理解 MVC是ModelViewControler的簡稱。即模型視圖控制器。MVC是一種設(shè)計(jì)模式,它強(qiáng)制性的把應(yīng)用程序的輸入、處理和輸出分開。 MVC中的模型、視圖、控制器它們分別擔(dān)負(fù)著不同的任務(wù)。 視圖: 視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關(guān)的數(shù)據(jù),并接受用戶的輸入。視圖不進(jìn)行任何業(yè)務(wù)邏輯處理。 模型: 模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)處理。相當(dāng)于JavaBean。一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。這提高了應(yīng)用程序的重用性 控制器: 當(dāng)用戶單擊Web頁面中的提交按鈕時(shí),控制器接受請求并調(diào)用相應(yīng)的模型去處理請求。 然后根據(jù)處理的結(jié)果調(diào)用相應(yīng)的視圖來顯示處理的結(jié)果。 MVC的處理過程:首先控制器接受用戶的請求,調(diào)用相應(yīng)的模型來進(jìn)行業(yè)務(wù)處理,并返回?cái)?shù)據(jù)給控制器??刂破髡{(diào)用相應(yīng)的視圖來顯示處理的結(jié)果。并通過視圖呈現(xiàn)給用戶。Struts1. struts1.2和struts2.0的區(qū)別?如何控制兩種框架中的單例模式? struts1.2和struts2.0的對比 a、Action類: struts1.2要求Action類繼承一個(gè)基類。struts2.0 Action要求繼承ActionSupport基類 b、線程模式 struts1.2 Action是單例模式的并且必須是線程安全的,因?yàn)閮H有一個(gè)Action的實(shí)例來處理所有的請求。 單例策略限制了Struts1.2 Action能做的事情,并且開發(fā)時(shí)特別小心。Action資源必須是線程安全的或同步的。 struts2.0 Action為每一個(gè)請求產(chǎn)生一個(gè)實(shí)例,因此沒有線程安全問題。 c、Servlet依賴 struts1.2 Action依賴于Servlet API,因?yàn)楫?dāng)一個(gè)Action被調(diào)用時(shí)HttpServletRequest和HttpServletResponse被傳遞給execut方法。 struts2.0 Action不依賴于容器,允許Action脫離容器單獨(dú)測試。如果需要,Struts2 Action仍然可以訪問初始的Request和Response。 但是,其他的元素減少或者消除了直接訪問HttpServletRequest和HttpServletResponse的必要性。 d、可測性 測試struts1.2 Action的一個(gè)主要問題是execute方法暴露了Servlet API(這使得測試要依賴于容器)。一個(gè)第三方擴(kuò)展:struts TestCase 提供了一套struts1.2的模擬對象來進(jìn)行測試。 Struts2.0 Action可以通過初始化、設(shè)置屬性、調(diào)用方法來測試,“依賴注入”也使得測試更容易。 2. 項(xiàng)目中為什么使用SSH 1. 使用Struts是因?yàn)閟truts是基于MVC模式的,很好的將應(yīng)用程序進(jìn)行了分層,使開發(fā)者更關(guān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn);第二,struts有著豐富的taglib,如能靈活運(yùn)用,則能大大提高開發(fā)效率。 2. 使用Hibernate:因?yàn)閔ibernate為Java應(yīng)用提供了一個(gè)易用的、高效率的對象關(guān)系映射框架。hibernate是個(gè)輕量級的持久性框架,功能豐富。 3. 使用Spring:因?yàn)閟pring基于IoC(Inversion of Control,反向控制)和AOP構(gòu)架多層j2ee系統(tǒng)的框架,但它不強(qiáng)迫你必須在每一層中必須使用Spring,因?yàn)樗K化的很好,允許你根據(jù)自己的需要選擇使用它的某一個(gè)模塊; 采用IoC使得可以很容易的實(shí)現(xiàn)bean的裝配,提供了簡潔的AOP并據(jù)此實(shí)現(xiàn)事務(wù)管理(Transcation Managment),等等 3. struts與spring是如何繼承的 不懂題目之意:是否是說的struts的action都繼承自org.apache.struts.action.Action 而Spring中的繼承就不清楚了。4. struts如何實(shí)現(xiàn)國際化 以下以兩國語言(中文,英文)為例: 1. 在工程中加入Struts支持 2. 編輯ApplicationRperties文件,在其中加入要使用國際化的信息, 例如: lable.welcome.china=Welcome! 3. 創(chuàng)建英文資源文件ApplicationResource_perites 4. 創(chuàng)建臨時(shí)中文資源文件ApplicationResource_perites 例如:lable.welcom.china=中國歡迎您! 5. 對臨時(shí)中文資源文件進(jìn)行編碼轉(zhuǎn)換??梢允褂胢yeclipse的插件,也可以在dos下執(zhí)行: native2ascii -encoding gb2312 ApplicationResource_perties ApplicationResource_zh_CN.properties 6. 在jsp中加入struts的bean標(biāo)記庫 顯示信息: 可以在struts-config.xml文件中定義多個(gè)資源包,而每個(gè)資源包可使用key屬性指定包的名稱。5. struts2.0的常用標(biāo)簽 1. 往action里傳值: 2. 顯示標(biāo)簽 property 用于輸出指定值:3. 用于從頁面往action中(user)的對象內(nèi)傳值: 4. 判斷 用于在頁面中判斷指定數(shù)據(jù) . . 5. 迭代用于將List、Map、ArrayList等集合進(jìn)行循環(huán)遍歷 6. URL地址標(biāo)簽,用于生成一個(gè)URL地址,可以通過URL標(biāo)簽指定的子元素向URL地址發(fā)送請求參數(shù) 7. 超鏈接 一般和標(biāo)簽一起使用,用于帶多個(gè)參數(shù)。 a href= 超鏈接 8. set標(biāo)簽,用于將某個(gè)值放入指定的范圍內(nèi)。例如application,session等。 6. struts中怎么配置form-bean、action、tiles 此處配置的是struts1.2的 form-bean配置:(在配置文件struts-config.xml中): name: 指定form的名字; type指定form的類型:包名+類名; action配置:(在配置文件struts-config.xml中) path:請求Action的名字; attribute:form的名字,與form-bean中的name對應(yīng); input:輸入頁的路徑; name:如果配置了attribute,name不起作用,與attribute一樣; parameter:使用分發(fā)Action時(shí),指定調(diào)用分發(fā)Action中的方法名; scope:Action的范圍; type:Action的類型:包名+類名; tites配置: 1. 新建一個(gè) tiles-defs.xml文件,并在其中做如下配置: 2. 在web.xml和struts-config.xml和web.xml中做相應(yīng)配置: 在struts-config.xml中配置如下: * * 在web.xml中配置如下: * definitions-config /WEB-INF/tiles-defs.xml * 3. 調(diào)用Tiles組件 Tiles組件是通過Struts Action來調(diào)用的,在struts-config.xml中做如下action配置: * *7. logic標(biāo)簽有哪幾個(gè)? 此標(biāo)簽庫可以分為三種類型:條件、循環(huán)、轉(zhuǎn)發(fā)/重定向。 1. 條件類型 (沒標(biāo)注的都比較簡單) logic:empty, logic:notEmpty; logic:equal, logic:notEqual, logic:lessThan, logic:greaterThan,logic:lessEqual, logic:greaterEqual; logic:present, logic:notPresent; logic:match, logic:notMatch; 比較兩字符串是否相等,可以比較字符串的開始的、結(jié)尾的或其中的某個(gè)部分。location屬性:指定從某個(gè)位置開始進(jìn)行比較。 2. 循環(huán)類型 logic:iterate 3. 轉(zhuǎn)發(fā)/重定向類型 logic:forward和logic:redirect logic:forward標(biāo)簽和jsp:forward標(biāo)簽相似,但它可以使用global forward中的一個(gè)ActionForward 例如: - 與上面相關(guān)的global forward中的代碼: logic:redirect標(biāo)簽和上面的標(biāo)簽類似,但它默認(rèn)調(diào)用的方法是response.sendRedirect(), 取代了上面的requestDispatcher.forward()。最大的不同是它支持所有html:link標(biāo)簽的屬性,所以你能夠指定request參數(shù): 在MVC框架下,不推薦使用這兩個(gè)標(biāo)簽,你應(yīng)該是從controller中選擇下一個(gè)view,而不是從view中選擇.在Jsp頁面中不要過多的使用logic標(biāo)簽。 8. action是單實(shí)例還是多實(shí)例,為什么? action是單實(shí)例的。當(dāng)多個(gè)用戶訪問一個(gè)請求的時(shí)候,服務(wù)器內(nèi)存中只有一個(gè)與之對應(yīng)的action類對象。 因?yàn)楫?dāng)服務(wù)器第一次加載struts的配置文件的時(shí)候,創(chuàng)建了一個(gè)Action后,每發(fā)送一個(gè)請求,服務(wù)器都會(huì)先去檢索相應(yīng)的范圍內(nèi)(request,session)是否存在 這樣一個(gè)action實(shí)例,如果存在,則使用這個(gè)實(shí)例,如果不存在,則創(chuàng)建一個(gè)action實(shí)例。9. dispatchAction是用什么技術(shù)實(shí)現(xiàn)的? DispatchAction是Aciton的一個(gè)子類,主要解決了一個(gè)請求處理多個(gè)功能的問題 普通的Action你只能寫execute方法來處理業(yè)務(wù),而想用這一個(gè)Action處理多個(gè)任務(wù),你必須要請求參數(shù)進(jìn)行解析,用if語句塊來處理 舉一個(gè)小例子: 有如下一個(gè)url: http:/localhost:8080/myApp/addUserAction.do 如果你處理這個(gè)url的是一個(gè)普通的Action,那么就只能在execute里面執(zhí)行插入的相關(guān)操作,如果換成一下url: http:/localhost:8080/myApp/UserAction.do?method=add 你就應(yīng)該根據(jù)method對象的值來執(zhí)行相應(yīng)的操作,如再有一個(gè)路徑http:/localhost:8080/myApp/UserAction.do?method=delete 這個(gè)還可以使用那個(gè)Action來處理的,只是多判斷一下而已. 如果你用DispatchAction,就簡單多了,所以dispatchAction還是用的Action的這么一個(gè)技術(shù)。10. struts2.0的mvc模式?與struts1.0的區(qū)別? struts2的mvc模式:當(dāng)用戶在頁面提交用戶請求時(shí),該請求需要提交給struts2的控制器處理。struts2的控制器根據(jù)處理結(jié)果, 決定將哪個(gè)頁面呈現(xiàn)給客戶端。 與struts1最大的不同是:struts2的控制器。struts2的控制器不再像struts1的控制器,需要繼承一個(gè)Action父類,甚至可以無需實(shí)現(xiàn) 任何接口,struts2的Action就是一個(gè)普通的POJO。實(shí)際上,Struts2 的Action就是一個(gè)包含execute方法的普通Java類 該類里包含的多個(gè)屬性用于封裝用戶的請求參數(shù)。11. STRUTS的配置文件是什么?struts-config.xml12. 請寫出Struts的工作原理。13. struts的處理流程。一、ActionServlet的初始化ActionServlet作為Struts組件的前端控制器,由于web.xml的相應(yīng)配置:0在應(yīng)用一加載時(shí)即會(huì)被實(shí)例化并調(diào)用其init方法,init方法所做的主要工作有二:1. 加載struts配置文件,并創(chuàng)建用于封裝配置信息的ModuleConfig對象2. 加載資源文件,并創(chuàng)建用于封裝資源文件的MessageResources對象需要注意兩點(diǎn):如果web.xml有多模塊配置,將創(chuàng)建多個(gè)ModuleConfig對象和MessageResources對象分別用于封裝各個(gè)模塊的struts配置文件和資源文件。針對各個(gè)模塊所創(chuàng)建的ModuleConfig對象和MessageResources對象將存儲(chǔ)在ServletContext中,對應(yīng)的屬性名中有該模塊名稱的相應(yīng)標(biāo)識(shí)。另外,如果有相應(yīng)配置的話,init方法還將初始化數(shù)據(jù)源和PlugIn二、ActionServlet的process所有形如*.do的請求(根據(jù)web.xml中的相關(guān)配置)將提交給ActionServlet,最終將調(diào)用其process方法。process方法的主要工作有三:1. 根據(jù)請求信息獲知所請求的模塊名稱,從ServletContext中獲得與請求模塊對應(yīng)的的ModuleConfig對象,并存儲(chǔ)到request中。2. 根據(jù)模塊信息獲得相應(yīng)的RequestProcessor對象,一個(gè)模塊對應(yīng)一個(gè)RequestProcessor對象,RequestProcessor對象將關(guān)聯(lián)與所屬模塊對應(yīng)的ModuleConfig對象。3. 調(diào)用RequestProcessor對象的process方法,將request和response作為參數(shù)傳遞給它。三、RequestProcessor的processRequestProcessor對象的process方法的主要工作有五步:1. 調(diào)用自己的 processPreprocess(request, response)方法,該方法不進(jìn)行任何操作,用于子類重寫擴(kuò)展其功能。2. 獲得與請求地址所匹配的ActionMapping對象,AcionMapping對象用于封裝一個(gè)特定acion的配置信息。3. 根據(jù)ActionMapping中的配置信息獲得ActionForm對象(該對象將緩存到request或session中),并將表單數(shù)據(jù)填充到ActionForm中,然后根據(jù)ActionMapping的配置決定是否驗(yàn)證ActionForm,如果驗(yàn)證,將調(diào)用ActionForm的 validate方法,若其返回的ActionErros對象中包含ActionMessage對象則表示驗(yàn)證失敗,將轉(zhuǎn)向action配置信息 input屬性所指示的地址。4. 如果ActionForm無需驗(yàn)證或驗(yàn)證通過將創(chuàng)建并緩存與請求地址匹配的Action對象,將ActionMapping對象、ActionForm對象、request和response作為參數(shù)調(diào)用其execute方法。5. 根據(jù)Action對象的execute方法返回的ActionForward對象,將請求轉(zhuǎn)發(fā)或重定向到該ActionForward所封裝的地址。14. 用struts +hibernate做一個(gè)增刪查改(機(jī)試)15. Struts2.0與Struts1.x有何區(qū)別。Feature特征 Struts 1 Struts的一 Struts 2 Struts的2 Action classes行動(dòng)班 Struts 1 requires Action classes to extend an abstract base class. Struts的一要求采取行動(dòng)班,以延長一個(gè)抽象的基類。 A common problem in Struts 1 is programming to abstract classes instead of interfaces.一個(gè)共同的問題在Struts的一,是編程抽象類而不是接口。 An Struts 2 Action may implement an Action interface, along with other interfaces to enable optional and custom services. 1 2 Struts的行動(dòng), 可能實(shí)施一項(xiàng)行動(dòng)的界面,隨著其他接口,使可選和定制服務(wù)。 Struts 2 provides a base ActionSupport class to implement commonly used interfaces. Struts的2提供了相應(yīng)的actionsupport一流的執(zhí)行常用的接口。 Albeit, the Action interface is not required.雖然,這項(xiàng)行動(dòng)的界面是不是必需的 。 Any POJO object with a execute signature can be used as an Struts 2 Action object.任何波霍對象與執(zhí)行的簽名可以被用來作為一個(gè)Struts的二行動(dòng)的對象。 Threading Model線程模型 Struts 1 Actions are singletons and must be thread-safe since there will only be one instance of a class to handle all requests for that Action. Struts的一行動(dòng)是單身,必須線程安全的,因?yàn)閷⒅挥幸粋€(gè)實(shí)例一類來處理所有的請求采取行動(dòng)。 The singleton strategy places restrictions on what can be done with Struts 1 Actions and requires extra care to develop.單身人士策略地方的限制,可以做些什么與Struts的一行動(dòng),并要求加倍小心發(fā)展。 Action resources must be thread-safe or synchronized.行動(dòng)的資源,必須線程安全的或同步。 Struts 2 Action objects are instantiated for each request, so there are no thread-safety issues. 2 Struts的行動(dòng)對象是實(shí)例對于每個(gè)請求,因此沒有線程安全問題。 (In practice, servlet containers generate many throw-away objects per request, and one more object does not impose a performance penalty or impact garbage collection.) (在實(shí)踐中, Servlet的容器,產(chǎn)生許多扔離家出走的對象,每次請求,并多一個(gè)對象不施加表現(xiàn)罰款,或影響垃圾收集) 。 Servlet Dependency Servlet的依賴 Struts 1 Actions have dependencies on the servlet API since the HttpServletRequest and HttpServletResponse is passed to the execute method when an Action is invoked. Struts的一行動(dòng),依賴于該Servlet的空氣污染指數(shù)以來, httpservletrequest和httpservletresponse傳遞給Execute方法,當(dāng)一個(gè)行動(dòng)是引用。 Struts 2 Actions are not coupled to a container. Struts的行動(dòng),二是不耦合的一個(gè)貨柜。 Most often the servlet contexts are represented as simple Maps, allowing Actions to be tested in isolation.最經(jīng)常的Servlet的背景是派代表作為簡單的地圖,讓行動(dòng),以測試陷入孤立的境地。 Struts 2 Actions can still access the original request and response, if required. 2 Struts的行動(dòng)仍然可以使用原來的請求和響應(yīng),如果需要。 However, other architectural elements reduce or eliminate the need to access the HttpServetRequest or HttpServletResponse directly.不過,其他建筑元素,減少或消除需要訪問httpservetrequest或httpservletresponse直接。 Testability測試 A major hurdle to testing Struts 1 Actions is that the execute method exposes the Servlet API.一個(gè)主要障礙,以測試Struts的一行動(dòng)是Execute方法暴露了Servlet的空氣污染指數(shù)。 A third-party extension, Struts TestCase, offers a set of mock object for Struts 1.第三黨的擴(kuò)展, Struts的testcase ,提供了一套模擬對象的Struts 1 。 Struts 2 Actions can be tested by instantiating the Action, setting properties, and invoking methods. 2 Struts的行動(dòng)可以測試實(shí)例化的行動(dòng),設(shè)置屬性,引用的方法。 Dependency Injection support also makes testing simpler.依賴注入的支持也使測試更簡單。 Harvesting Input收獲的投入 Struts 1 uses an ActionForm object to capture input. Struts的一使用actionform對象捕獲輸入。 Like Actions, all ActionForms must extend a base class.一樣的行動(dòng),所有actionforms必須擴(kuò)大基地,一流的。 Since other JavaBeans cannot be used as ActionForms, developers often create redundant classes to capture input.由于其他的JavaBeans不能被用來作為actionforms ,開發(fā)商常常造成多余的班,以捕捉的投入。 DynaBeans can used as an alternative to creating conventional ActionForm classes, but, here too, developers may be redescribing existing JavaBeans. dynabeans可以用來作為一種替代創(chuàng)造常規(guī)actionform班,但這里太,發(fā)展商可能會(huì)redescribing現(xiàn)有的JavaBeans 。 Struts 2 uses Action properties as input properties, eliminating the need for a second input object. Struts的2使用性能的行動(dòng)作為輸入屬性,不再需要第二個(gè)輸入對象。 Input properties may be rich object types which may have their own properties.輸入屬性可能是豐富的對象類型可能有自己的屬性。 The Action properties can be accessed from the web page via the taglibs.行動(dòng)性質(zhì)可以從網(wǎng)頁上通過taglibs 。 Struts 2 also supports the ActionForm pattern, as well as POJO form objects and POJO Actions. Struts的2還支持actionform模式,以及波霍形式,對象和波霍行動(dòng)。 Rich object types, including business or domain objects, can be used as input/output objects.豐富的對象類型,其中包括商業(yè)利益或域?qū)ο?,可以被用來作為輸?輸出對象。 The ModelDriven feature simplifies taglb references to POJO input objects.該modeldriven功能簡化taglb的提述,波霍投入對象。 Expression Language語言表達(dá) Struts 1 integrates with JSTL, so it uses the JSTL EL. Struts的一整合與jstl ,所以它使用jstl下午。 The EL has basic object graph traversal, but relatively weak collection and indexed property support.的El已基本對象圖遍歷,但相對薄弱的收集和索引財(cái)產(chǎn)的支持。 Struts 2 can use JSTL, but the framework also supports a more powerful and flexible expression language called Object Graph Notation Language (OGNL). Struts的二可以使用jstl ,但框架也支持一個(gè)更強(qiáng)大和靈活的語言表達(dá)所謂的“對象圖形符號語言” ( ognl ) 。 Binding values into views有約束力的價(jià)值觀納入意見 Struts 1 uses the standard JSP mechanism for binding objects into the page context for access. Struts的一使用標(biāo)準(zhǔn)的JSP機(jī)制,有約束力的物體進(jìn)入該網(wǎng)頁的背景下訪問。 Struts 2 uses a ValueStack technology so that the taglibs can access values without coupling your view to the object type it is rendering. Struts的2使用“ valuestack ”技術(shù),使該taglibs可以訪問的價(jià)值觀沒有耦合您的看法,以對象類型,這是渲染。 The ValueStack strategy allows reuse of views across a range of types which may have the same property name but different property types.該valuestack策略允許重用的意見覆蓋的類型可能有相同的屬性名稱,但不同的屬性類型。 Type Conversion類型轉(zhuǎn)換 Struts 1 ActionForm properties are usually all Strings. Struts的一actionform屬性通常是所有字符串。 Struts 1 uses Commons-Beanutils for type conversion. Struts的一用途的商品- beanutils為類型轉(zhuǎn)換。 Converters are per-class, and not configurable per instance.轉(zhuǎn)換器每級的,而不是配置的每個(gè)實(shí)例。 Struts 2 uses OGNL for type conversion. Struts的2使用ognl為類型轉(zhuǎn)換。 The framework includes converters for basic and common object types and primitives.該框架包括轉(zhuǎn)換為基本和共同的對象類型和原始。 Validation驗(yàn)證 Struts 1 supports manual validation via a validate method on the ActionForm, or through an extension to the Commons Validator. Struts的一支持手冊審定通過驗(yàn)證方法對actionform ,或通過一個(gè)擴(kuò)展到商品校驗(yàn)。 Classes can have different validation contexts for the same class, but cannot chain to validations on sub-objects.班級可以有不同的驗(yàn)證背景為同一階層,但不能鏈,以驗(yàn)證就分對象。 Struts 2 supports manual validation via the validate method and the XWork Validation framework. Struts的2支持手冊審定通過驗(yàn)證的方法和xwork的驗(yàn)證框架。 The Xwork Validation Framework supports chaining validation into sub-properties using the validations defined for the properties class type and the validation context.該xwork的驗(yàn)證框架支持鏈接驗(yàn)證分為分性能的使用驗(yàn)證的定義為性能一流的類型和驗(yàn)證。 Control Of Action Execution控制行動(dòng)的執(zhí)行 Struts 1 supports separate Request Processors (lifecycles) for each module, but all the Actions in the module must share the same lifecycle. Struts的一支持獨(dú)立的請求處理器(生命周期)為每個(gè)單元,但所有的行動(dòng),在該模塊必須共用相同的生命周期。 Struts 2 supports creating different lifecycles on a per Action basis via Interceptor Stacks. 2 Struts的支持,創(chuàng)造不同的生命周期對每行動(dòng)的基礎(chǔ)上通過攔截堆疊。 Custom stacks can be created and used with different Actions, as needed.自定義棧,才能創(chuàng)造和使用不同的行動(dòng),視需要。 16. Struts/webwork 的工作機(jī)制,它有哪些標(biāo)簽Struts 2框架的大致處理流程如下:瀏覽器發(fā)送請求,例如請求/mypage.action、/reports/myreport.pdf等。核心控制器FilterDispatcher根據(jù)請求決定調(diào)用合適的Action。WebWork的攔截器鏈自動(dòng)對請求應(yīng)用通用功能,例如workflow、validation或文件上傳等功能。回調(diào)Action的execute方法,該execute方法先獲取用戶請求參數(shù),然后執(zhí)行某種數(shù)據(jù)庫操作,既可以是將數(shù)據(jù)保存到數(shù)據(jù)庫,也可以從數(shù)據(jù)庫中檢索信息。實(shí)際上,因?yàn)锳ction只是一個(gè)控制器,它會(huì)調(diào)用業(yè)務(wù)邏輯組件來處理用戶的請求。Action的execute方法處理結(jié)果信息將被輸出到瀏覽器中,可以是HTML頁面、圖像,也可以是PDF文檔或者其他文檔。此時(shí)支持的視圖技術(shù)非常多,既支持JSP,也支持Velocity、FreeMarker等模板技術(shù)。Hibernate1. 什么是Hibernate的并發(fā)機(jī)制?怎么去處理并發(fā)問題? Hibernate并發(fā)機(jī)制: a、Hibernate的Session對象是非線程安全的,對于單個(gè)請求,單個(gè)會(huì)話,單個(gè)的工作單元(即單個(gè)事務(wù),單個(gè)線程),它通常只使用一次, 然后就丟棄。 如果一個(gè)Session 實(shí)例允許共享的話,那些支持并發(fā)運(yùn)行的,例如Http request,session beans將會(huì)導(dǎo)致出現(xiàn)資源爭用。 如果在Http Session中有hibernate的Session的話,就可能會(huì)出現(xiàn)同步訪問Http Session。只要用戶足夠快的點(diǎn)擊瀏覽器的“刷新”, 就會(huì)導(dǎo)致兩個(gè)并發(fā)運(yùn)行的線程使用同一個(gè)Session。 b、多個(gè)事務(wù)并發(fā)訪問同一塊資源,可能會(huì)引發(fā)第一類丟失更新,臟讀,幻讀,不可重復(fù)讀,第二類丟失更新一系列的問題。 解決方案:設(shè)置事務(wù)隔離級別。 Serializable:串行化。隔離級別最高 Repeatable Read:可重復(fù)讀 Read Committed:已提交數(shù)據(jù)讀 Read Uncommitted:未提交數(shù)據(jù)讀。隔離級別最差 設(shè)置鎖:樂觀鎖和悲觀鎖。 樂觀鎖:使用版本號或時(shí)間戳來檢測更新丟失,在的映射中設(shè)置 optimistic-lock=all可以在沒有版本或者時(shí)間戳屬性映射的情況下實(shí)現(xiàn) 版本檢查,此時(shí)Hibernate將比較一行記錄的每個(gè)字段的狀態(tài) 行級悲觀鎖:Hibernate總是使用數(shù)據(jù)庫的鎖定機(jī)制,從不在內(nèi)存中鎖定對象!只要為JDBC連接指定一下隔 離級別,然后讓數(shù)據(jù)庫去搞定一切就夠了。類Loc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論