




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java框架面試題總結(jié) 2011-03-26目錄ØStruts 篇41. Struts的工作流程42. Struts的工作流程分解43. Struts控制器組件的組成. 和控制器的主要功能44. Struts中的幾個(gè)關(guān)鍵對(duì)象的作用(說說幾個(gè)關(guān)鍵對(duì)象的作用)45. Struts工作流程圖(用例圖)56. 說說MVC設(shè)計(jì)模式和它的優(yōu)點(diǎn)57. 說說struts是如何實(shí)現(xiàn)MVC的 ?68. Struts優(yōu)點(diǎn)與缺點(diǎn)69 . strust的Action是不是線程安全的?如果不是 有什么方式可以保證Action的線程安610. Tiles框架是什么?611. struts1.x 和struts 2
2、 的區(qū)別612 . Struts 的常用標(biāo)簽庫及用法8Struts html標(biāo)簽庫8Struts bean標(biāo)簽庫12Struts Logic標(biāo)簽庫1313、JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?15ØAjax 篇151.ajax是什么152.ajax實(shí)現(xiàn)的原理163.ajax框架的基本流程164.dwr的實(shí)現(xiàn)原理.165.ajax 開發(fā)步驟.16ØSpring 篇16一.基礎(chǔ)知識(shí)161.對(duì)IOC的理解.162.依賴注入的三種實(shí)現(xiàn)形式?173.Setter注入和構(gòu)造方法注入比較184.對(duì)AOP的理解,以及AOP在項(xiàng)目中是如何使用的?185.AOP的概念和術(shù)語1
3、96.Spring中有五中不同的通知:197.Spring bean的生命周期:198.Bean的作用域199.Spring自動(dòng)代理2010.Spring 事務(wù)特點(diǎn)2011.談?wù)凷pring 事務(wù)的理解2012.編程式事務(wù)和聲明式事務(wù)如何選擇?21二.Spring應(yīng)用2113.spring中的BeanFactory與ApplicationContext的作用和區(qū)別?2114.Spring里面applicationContext.xml文件能不能改成其他文件名?2215.spring中commons-logging.jar的作用2216.spring中讀取xml配置文件、獲取bean的幾種方式2
4、217.Spring 啟動(dòng)參數(shù)contextConfigLocation 和ContextLoaderListener 理解2318.Spring框架在web容器是如何啟動(dòng)的?25ØHibernate 篇251Hibernate優(yōu)缺點(diǎn)?252Hibernate工作原理及為什么要用?263Hibernate是如何延遲加載?264Hibernate中怎樣實(shí)現(xiàn)類之間的關(guān)系?(如:一對(duì)多、多對(duì)多的關(guān)系)275說下Hibernate的緩存機(jī)制276什么樣的數(shù)據(jù)適合放到二級(jí)緩存中?277Hibernate的查詢方式288如何優(yōu)化Hibernate?289說說Hibernate中的update()
5、和saveOrUpdate()的區(qū)別2810說說Hibernate中的session的load()和get()的區(qū)別。2811談?wù)凥ibernate中inverse的作用2812hibernate中對(duì)象的三種狀態(tài)2913在數(shù)據(jù)庫中條件查詢速度很慢的時(shí)候,如何優(yōu)化?2914在hibernate中進(jìn)行多表查詢,每個(gè)表中各取幾個(gè)字段,也就是說查詢出來的結(jié)果集并沒有一個(gè)實(shí)體類與之對(duì)應(yīng),如何解決這個(gè)問題?29ØiBatis 篇301.iBatis的優(yōu)缺點(diǎn)?302.iBatis與Hibernate區(qū)別(比較)?303.iBatis與傳統(tǒng)JDBC比較314.Hibernate和iBatis的映射關(guān)
6、系315.iBatis動(dòng)態(tài)標(biāo)簽有哪些?316.iBatis中使用like %#filedName#% 時(shí),有什么問題?327.iBatis中#與$的區(qū)別?32Ø框架問題321. SSH框架的配置文件加載順序.322. Spring框架在web容器是如何啟動(dòng)的?333. Webservice + spring2.0 + iBatis項(xiàng)目的加載順序.334.appfuse框架機(jī)制.335.iBatis與Hibernate如何選擇?33參考:iBatis與Hibernate比較。33Ø Struts 篇1. Struts的工作流程當(dāng)客戶端向?yàn)g覽器發(fā)送HTTP請求時(shí),所有瀏覽器請求
7、都被提交給ActionServlet處理。如果用戶提交表單,則會(huì)將表單中的數(shù)據(jù)放入到ActionForm中。ActionServlet根據(jù)struts_config.xml文件中預(yù)先配置好的設(shè)置選擇將請求轉(zhuǎn)發(fā)到哪個(gè)action對(duì)象,action對(duì)象從actionForm對(duì)象中獲取數(shù)據(jù),但后調(diào)用業(yè)務(wù)邏輯組件,完成業(yè)務(wù)功能。2. Struts的工作流程分解 Web應(yīng)用如果采用struts框架,在web應(yīng)用啟動(dòng)時(shí)就會(huì)加載并初始化ActionServlet, ActionServlet從struts_config.xml文件中讀取配置信息,基本執(zhí)行步驟如下: (1) 所有瀏覽器請求都被提交給Actio
8、nServlet處理(2) ActionServlet根據(jù)struts_config.xml文件中預(yù)先配置好的設(shè)置,選擇應(yīng)該將請求轉(zhuǎn)發(fā)到哪個(gè)action對(duì)象. (3) 當(dāng)用戶提交表單時(shí),一個(gè)配置好的ActionForm對(duì)象將被創(chuàng)建,并被填入表單中的相當(dāng)數(shù)據(jù). (4) Action對(duì)象從ActionForm對(duì)象中獲取數(shù)據(jù). (5) Action對(duì)象調(diào)用業(yè)務(wù)邏輯組件完成業(yè)務(wù)功能. 3. Struts控制器組件的組成. 和控制器的主要功能Struts控制器組件主要包括:ActionServlet組件:充當(dāng)Struts框架的中央控制器. RequestRrocessor組件:充當(dāng)每個(gè)子應(yīng)用模塊的請求處
9、理器. Action組件:負(fù)責(zé)處理一項(xiàng)具體的業(yè)務(wù). Struts控制器組件主要完成以下任務(wù):l 接受用戶請求. l 根據(jù)用戶請求,調(diào)用合適的模型組件來執(zhí)行相應(yīng)的業(yè)務(wù)邏輯. l 獲取業(yè)務(wù)邏輯執(zhí)行結(jié)果. l 根據(jù)當(dāng)前狀態(tài)以及業(yè)務(wù)邏輯執(zhí)行結(jié)果,選擇合適的視圖組件返回給用戶. 4. Struts中的幾個(gè)關(guān)鍵對(duì)象的作用(說說幾個(gè)關(guān)鍵對(duì)象的作用)ActionServlet類控制導(dǎo)航流. ActionServlet根據(jù)URI來決定哪個(gè)Action類被用于處理請求,Action可以校驗(yàn)輸入,并訪問業(yè)務(wù)層以便從數(shù)據(jù)庫檢索信息. Action需要知道頁面提交了哪些內(nèi)容,所以由ActionServlet根據(jù)請求UR
10、I來決定將請求參數(shù)綁定到哪個(gè)ActionForm中并傳入Action. Action在完成業(yè)務(wù)邏輯后,返回一個(gè)ActionForward對(duì)象,ActionServlet根據(jù)ActionForward對(duì)象中的路徑來調(diào)用頁面完成響應(yīng). Struts將這些信息綁定在一個(gè)ActionMapping對(duì)象中,一個(gè)ActionMapping對(duì)應(yīng)一個(gè)請求URI,當(dāng)請求路徑到達(dá)的時(shí)候,ActionServlet就會(huì)查詢ActionMapping對(duì)象,ActionMapping對(duì)象將告訴ActionServlet哪個(gè)Action類會(huì)被調(diào)用,哪個(gè)ActionForm類被用于傳遞頁面數(shù)據(jù)以及哪些ActionForwa
11、rd將被用于轉(zhuǎn)向. 有關(guān)Action,ActionForm,ActionForward等信息,通過struts-config.xml配置文件來定義.5. Struts工作流程圖(用例圖) 注: Servlet 容器在啟動(dòng)時(shí),或者用戶首次請求ActionServlet時(shí)加載ActionServlet類. 6. 說說MVC設(shè)計(jì)模式和它的優(yōu)點(diǎn)MVC是一種設(shè)計(jì)模式,.它強(qiáng)制性的把應(yīng)用程序的輸入,處理和輸出分開.MVC把應(yīng)用程序分成三個(gè)核心模塊:模型(Model),視圖(View)和控制器(Controller).他們分別處理不同的任務(wù). 視圖是用戶看到并與之交互的界面.視圖向用戶顯示相關(guān)的數(shù)據(jù),并能接
12、受用戶的輸入數(shù)據(jù),但是它不進(jìn)行任何實(shí)際的業(yè)務(wù)處理. 模型是應(yīng)用程序的主體部分.模型表示業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯.一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù).由于同一個(gè)模型可以被多個(gè)視圖重用,所以提高了應(yīng)用的重用性. 控制器接受用戶的輸入并調(diào)用模型和視圖去完成任務(wù).MVC的處理邏輯如下: 首先控制器接受用戶請求,并決定應(yīng)該調(diào)用哪個(gè)模型來進(jìn)行處理,然后模型根據(jù)用戶請求進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理,并返回?cái)?shù)據(jù). 最后控制器調(diào)用相應(yīng)的視圖來格式化模型返回的詩句,并通過視圖呈現(xiàn)給用戶. MVC的優(yōu)點(diǎn):(1) 在MVC設(shè)計(jì)模式中,模型響應(yīng)用戶請求并返回響應(yīng)數(shù)據(jù),視圖負(fù)責(zé)格式化數(shù)據(jù)并把它們呈現(xiàn)給用戶,業(yè)務(wù)邏輯和表示層分離,同一個(gè)模型
13、可以被不同的視圖重用,所以大大提高了代碼的可重用性. (2) MVC的三個(gè)模塊相互獨(dú)立,改變其中的一個(gè)不會(huì)影響其他兩個(gè),所以根據(jù)這種設(shè)計(jì)思想能構(gòu)造良好的松耦合的構(gòu)件. (3) 控制器可以用來連接不同的模型和視圖去完成用戶的需求,也可以為構(gòu)造應(yīng)用程序提供強(qiáng)有力的手段.給定一些可重用的模型和視圖,控制器可以根據(jù)用戶的需求選擇適當(dāng)?shù)哪P瓦M(jìn)行處理,然后選擇適當(dāng)?shù)囊晥D將結(jié)果顯示給用戶. 7. 說說struts是如何實(shí)現(xiàn)MVC的 ?Struts采用JSP作為MVC的視圖, 控制器由ActionServlet和Action類來實(shí)現(xiàn). 控制器負(fù)責(zé)視圖和模型之間的交互. 模型由實(shí)現(xiàn)業(yè)務(wù)邏輯的JavaBean或E
14、JB組件構(gòu)成, 然后說說Struts的工作流程. 8. Struts優(yōu)點(diǎn)與缺點(diǎn) Struts是開源軟件,使開發(fā)者能更深入的了解其內(nèi)部實(shí)現(xiàn)機(jī)制。 Struts 優(yōu)點(diǎn):業(yè)界"標(biāo)準(zhǔn)"(很多成功案例),學(xué)習(xí)資源豐富。 Struts的優(yōu)點(diǎn)主要集中體現(xiàn)在兩個(gè)方面:Taglib和頁面導(dǎo)航。 a、利用Struts提供的taglib可以大大節(jié)約開發(fā)時(shí)間。
15、; b、維護(hù)擴(kuò)展比較方便。通過一個(gè)配置文件,即可把握整個(gè)系統(tǒng)各部分之間的聯(lián)系,這對(duì)于后期的維護(hù)有著莫大的好處。 c、表現(xiàn)與邏輯分離 d、表單驗(yàn)證解決了請求數(shù)據(jù)的驗(yàn)證問題,增強(qiáng)了系統(tǒng)健壯性。 e、便于團(tuán)隊(duì)開發(fā)
16、; Struts缺點(diǎn):a、大量的使用標(biāo)簽,對(duì)于初學(xué)者難度較大。 b、ActionForms使用不便、無法進(jìn)行單元測試(StrutsTestCase只能用于集成)9 . strust的Action是不是線程安全的?如果不是 有什么方式可以保證Action的線程安全?如果是,說明原因不是. 為了確保action的線程安全, 最好的辦法就是不要在ac
17、tion里定義實(shí)列變量.10. Tiles框架是什么?Tiles框架為創(chuàng)建Web頁面提供了一種模板機(jī)制,它能將網(wǎng)頁的布局和內(nèi)容分離。11. struts1.x 和struts 2 的區(qū)別本文將從Struts1和Struts2的各個(gè)方面進(jìn)行比較特征Struts 1 Struts 2Action類Struts1的action需要去繼承一個(gè)抽象基類。一個(gè)普遍問題就是Struts1是面向抽象類編程來代替接口編程Struts2的action可以實(shí)現(xiàn)一個(gè)Action接口,也可以同時(shí)實(shí)現(xiàn)一些其他的接口來添置一些附加的,常用的服務(wù)。Struts2提供一個(gè)基類ActionSupport實(shí)現(xiàn)了一些常用的接口。雖然
18、Action接口不是必須的。任何附帶execute方法的POJO對(duì)象都可以作為Struts2的action對(duì)象。線程模型Struts1的action是單例的而且必須是線程安全的,因?yàn)樵擃悤?huì)只有唯一一個(gè)引用來為action處理所有的請求。單例策略會(huì)限制Struts1的action的功能以及需要擴(kuò)展的額外的功能(The singleton strategy places restrictions on what can be done with Struts 1 Actions and requires extra care to develop)。Struts1的action必須是線程安全的并且
19、是同步的。Struts2的Action對(duì)象是針對(duì)每一個(gè)請求的,所以自然也就不存在線程安全問題了。(實(shí)際上,)Servlet的依賴Struts1的Action依賴于Servlet API,因?yàn)楫?dāng)Action被調(diào)用的時(shí)候HttpServletRequest和HttpServletResponse對(duì)象是通過execute方法進(jìn)行處理的。Struts2的Action和容器的連接并不緊密。通常servlet上下文被描繪成簡單的Map映射,允許Action被單獨(dú)測試。當(dāng)然,如果需要的話Struts2的Action也可以通過訪問初始的request和response來完成一些功能。然而,其他的一些架構(gòu)元素導(dǎo)
20、致降低或者刪除了直接訪問request和response的需求。易測試性測試Struts1的Action有一個(gè)大障礙就是execute方法是直接暴露于servlet API的。Struts2的Action可以很容易的通過設(shè)置屬性調(diào)用方法來進(jìn)行測試。當(dāng)然依賴注入的支持也使得測試變得簡單。輸入處理Struts1使用一個(gè)ActionForm對(duì)象來獲取用戶的輸入。和action一樣,所有的ActionForm都必須繼承自一個(gè)基類。因?yàn)槠渌膉avaBean不能被用作ActionForm,開發(fā)者通常要寫一些多余的類來獲取用戶輸入。DynaBean可以被用做生成ActionForm類的一個(gè)選擇,但是開發(fā)者
21、需要對(duì)現(xiàn)有的javaBean進(jìn)行重寫。Struts2使用Action屬性作為輸入屬性,除掉了對(duì)于輸入對(duì)象的需求。輸入屬性可以是一個(gè)擁有他自己的屬性的對(duì)象。Action屬性是通過標(biāo)簽和web頁面交互。Struts2也支持ActionForm模型,就是POJO的Form對(duì)象和POJO的Action。多數(shù)的對(duì)象類型,包括商業(yè)邏輯對(duì)象和領(lǐng)域?qū)ο蠖伎梢宰鳛檩斎?輸入對(duì)象。模式驅(qū)動(dòng)特征簡化了標(biāo)簽和POJO輸入對(duì)象的關(guān)系。表達(dá)式語言Struts1和JSTL結(jié)合,所以他可以使用JSTL的EL。Struts2也支持JSTL,但是這個(gè)框架也支持更加強(qiáng)大的表達(dá)式語言O(shè)GNL表現(xiàn)層和類型值的綁定Struts1使用標(biāo)準(zhǔn)
22、的JSP機(jī)制將對(duì)象綁定到page context來進(jìn)行訪問。Struts2使用”ValueStack”技術(shù),所以標(biāo)簽不用將視圖和表現(xiàn)的對(duì)象結(jié)合就可以得到值.ValueStack策略允許通過一系列可能具有相同屬性名字但是不同屬性類型的的類型來完成視圖的重用,類型轉(zhuǎn)換Struts1的ActionForm通常都是String類型。Struts1通過Commons-Beanutils實(shí)現(xiàn)類型轉(zhuǎn)換。Struts2使用OGNL實(shí)現(xiàn)類型轉(zhuǎn)換,框架包含了對(duì)基礎(chǔ)和公共類型的轉(zhuǎn)換器。驗(yàn)證Struts1支持通過ActionForm中的validate方法實(shí)現(xiàn)手工驗(yàn)證。也可以通過擴(kuò)展通用的驗(yàn)證框架進(jìn)行驗(yàn)證。對(duì)于同一個(gè)
23、類可以有不同的驗(yàn)證,但是不能關(guān)聯(lián)到子對(duì)象的驗(yàn)證。Struts2也支持通過validate方法進(jìn)行手工驗(yàn)證以及Xwork驗(yàn)證框架進(jìn)行驗(yàn)證。Xwork驗(yàn)證框架支持將驗(yàn)證鏈接到子屬性,子屬性使用了為屬性類型和驗(yàn)證上下文定義的驗(yàn)證。Action執(zhí)行的控制Struts1支持為每一個(gè)模塊分配請求處理(生命周期),但是一個(gè)模塊中的所有Action必須分享相同的生命周期。Struts2支持通過攔截器棧為每個(gè)Action創(chuàng)建不同的生命周期。通常對(duì)于不同的Action根據(jù)需要都要有對(duì)應(yīng)的棧被創(chuàng)建和使用。12 . Struts 的常用標(biāo)簽庫及用法常見的struts標(biāo)簽庫有struts html 標(biāo)簽庫,struts
24、 bean標(biāo)簽庫, struts Logic標(biāo)簽庫,Struts Template 標(biāo)簽庫, Struts Nested 標(biāo)簽庫.HTML 標(biāo)簽 用來創(chuàng)建能夠和Struts 框架和其他相應(yīng)的HTML 標(biāo)簽交互的HTML 輸入表單 Bean 標(biāo)簽 在訪問JavaBeans 及其屬性,以及定義一個(gè)新的bean 時(shí)使用 Logic 標(biāo)簽 管理?xiàng)l件產(chǎn)生的輸出和對(duì)象集產(chǎn)生的循環(huán) Template 標(biāo)簽
25、; 隨著Tiles框架包的出現(xiàn),此標(biāo)記已開始減少使用 Nested 標(biāo)簽 增強(qiáng)對(duì)其他的Struts 標(biāo)簽的嵌套使用的能力以下分別講解struts標(biāo)簽庫的用法.Struts html標(biāo)簽庫<html:form>:生成html <form> 標(biāo)簽用法:<html:form action=”checkAction.do”></html:form><html:form>標(biāo)簽的action屬性用來指定當(dāng)前用戶提交表單后,處理用戶請求的組件.<html:te
26、xt>生成html <input type=”text”> 標(biāo)簽該標(biāo)簽在表單上創(chuàng)建HTML文本框字段.用法:<html:text property=”userName”>property:指定字段的名字<html:hidden>生成html <input type=”hidden”> 標(biāo)簽這個(gè)標(biāo)簽在表單上生成隱藏字段.隱藏字段用于在表單上存放不希望讓用戶看到或不允許修改的信息.<html:submit>生成html <input type=”submit”> 標(biāo)簽<html:submit>標(biāo)簽生成表單的提
27、交按鈕用法:<html:submit>submit<html:submit><html:reset>生成html <form type=”reset”> 標(biāo)簽<html:reset>標(biāo)簽生成表單復(fù)位按鈕用法:<html:reset>reset</html:reset><html:cancel>在表單上生成取消按鈕<html:cancel>標(biāo)簽用于生成表單取消按鈕 用法:<html:cancel>cancel</html:cancel><html:radio&
28、gt;:生成html <input type=”radio”>元素<html:radio>用于生成單選按鈕用法:<html:radio property=”sex” value=”1”>男</html:radio><html:radio property=”sex” value=”0”>女</html:radio>單選按鈕需要確保property一樣,只是value值不一樣就可以了.<html:multibox>:生成復(fù)選框 <input type=”checkBox”>用法: <html:m
29、ultibox property="fav" value="1"></html:multibox>籃球<html:multibox property="fav" value="2"></html:multibox>足球<html:multibox property="fav" value="3"></html:multibox>乒乓球復(fù)選框按鈕需要確保property一樣,value的值不同就可以了.還需要注意
30、的是復(fù)選框的值需要寫在標(biāo)簽按鈕的最后面的.如果應(yīng)用中有多個(gè)Checkbox,并且希望ActionFrom Bean 中用單個(gè)數(shù)組表示,都可以采用<html:multibox>. <html:multibox>的使用方法如下:(1) 在Action Form 中定義一個(gè)數(shù)組,用來存放checkBox的值,private String strArray =new String0;public String getStrArray() return this.strArray;public void SetStrArray(String strArray)this. StrA
31、rray = strArray;(2) 在表單中加入<html:multibox>元素,通過設(shè)置property=”strArray” 來把它和ActionFrom Bean 關(guān)聯(lián).(3) 對(duì)于每個(gè)<html:multibox>元素,設(shè)置它的初始值.<html:multibox property="strArray" value="1"></html:multibox>value1<html:select>下拉列表 用于生成html <select>元素它可以在表單上創(chuàng)建下拉列表和多
32、選列表用法:<html:select property=”colors” size=”7” multibox=”false”><html:option value=”1”>value1</html:option><html:option value=”2”>value2</html:option><html:option value=”3”>value3</html:option></html:select>屬性說明: size:指定每次在網(wǎng)頁上顯示的可選項(xiàng)的數(shù)目.Multibox:指定是否支持多項(xiàng)
33、選擇,如果設(shè)置為true,就表示多選列表.支持多項(xiàng)選擇;否則表示下拉列表.只支持單項(xiàng)選擇,默認(rèn)為falseProperty屬性:與action From中的某個(gè)屬性相對(duì)應(yīng).這個(gè)屬性用來存放用戶在列表上選中的選項(xiàng)的值.<html:file>標(biāo)簽生成html <input type=”file”>元素,提供從html表單中上傳文件的功能.<html:file>標(biāo)簽可以方便的實(shí)現(xiàn)文件上傳的功能.樣列代碼如下:<html:form action="/upload.do" method=”post” enctype="multipa
34、rt/form-data"><html:file property="file"/></br><html:submit>提交</html:submit></html:form>使用<html:file>標(biāo)簽要注意以下幾點(diǎn):(1) <html:file>標(biāo)簽必須嵌套在<html:form>標(biāo)簽中(2) <html:form>標(biāo)簽的method屬性必須設(shè)置為post(3) <html:form>標(biāo)簽的編碼類型emctype屬性必須設(shè)置為” mu
35、ltipart/form-data”(4) <html:file>標(biāo)簽必須設(shè)置property屬性,這個(gè)屬性和ActionFrom Bean中的FormFile類型的屬性對(duì)應(yīng).在ActiomForm中設(shè)置FormFile屬性:在actionForm中設(shè)置一個(gè)名為file的屬性,這個(gè)屬性必須為org.apache.struts.upload.FormFile類型.代碼如下:private FormFile file;public FormFile getFile()return this.file;public void setFile(FormFile file)this.file
36、=file上傳下載的例子詳細(xì)參見(My_JavaE 實(shí)例小例子upDownFile) <html:errors>標(biāo)簽:用于輸出錯(cuò)誤消息.<html:errors>標(biāo)簽可以放在網(wǎng)頁的任何地方,既可以位于HTML標(biāo)簽內(nèi),也可以位于HTML標(biāo)簽外,<html:errors>標(biāo)簽輸出的錯(cuò)誤消息和它在網(wǎng)頁上的位置有關(guān).<html:errors>標(biāo)簽具有以下重要的屬性:name:指定ActionMessage對(duì)象存放在request或sessios范圍內(nèi)的屬性key.標(biāo)簽處理類將根據(jù)這一屬性的key來檢索request或session范圍的ActionMes
37、sage對(duì)象.默認(rèn)值為Globals.ERROR_KEY.Property:指定消息的屬性.如果此項(xiàng)沒有設(shè)置,將顯示ActionMessages對(duì)象中的所有的ActionMessage.Bundle:指定Resource Bundle(資源包) ,如果此項(xiàng)沒有設(shè)置.將從應(yīng)用默認(rèn)的Resource Bundle 中獲取消息文本. 關(guān)于<html:errors>標(biāo)簽的用法詳見:精通struts p326_p328.錯(cuò)誤消息的來源<html:errors>標(biāo)簽在request或session范圍內(nèi)尋找ActionMessages(或其子類ActionErrors)集合對(duì)象.在
38、從ActionMessages集合對(duì)象讀取ActionMessage對(duì)象,把ActionMessage包含的消息文本顯示到網(wǎng)頁上.在ActionForm Bean和Action類中都可以生成ActionMessages對(duì)象.ActionForm Bean的validate() 方法執(zhí)行表單驗(yàn)證,返回ActionErrors對(duì)象,Struts控制器組件RequestProcessor(請求處理器)然后把ActionErrors對(duì)象存放在request范圍內(nèi),存放時(shí)的屬性key為Globals.ERROR_KEY .以下是HtmlErrorForm 的validate() 方法:public Ac
39、tionErrors validate(ActionMapping mapping ,HttpServletRequest request)ActionErrors errors = new ActionErrors();/如果復(fù)選筐被選中了,顯示錯(cuò)誤消息If(this,getCheckBox1()Errors.add(ActionMessages.Global_MESSAGE,.new ActionMessage(“error.global.fromform”);Errors.add(“checkbox1”,new ActionMessage(“error.checkbox”);retrun
40、 errors;在action類的execute()方法中可以進(jìn)行數(shù)據(jù)邏輯驗(yàn)證,如果驗(yàn)證失敗,將生成ActionMessages對(duì)象.以下是helloapp應(yīng)用的LogonAction的execute()方法; public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) ActionMessages errors = new ActionMessages();String userName=(String)(
41、HelloForm)form).getUserName();String badUserName=”Monster”;If(userName.equalsIgnoreCase(badUserName)Errors.add(“userName”,new ActionMessage(“hello.dont.talk.to.monster”,badUserName);SaveErrors(request,errors);Return (new ActionForward(mapping.getInput();以上代碼先創(chuàng)建了一個(gè)ActionMessages對(duì)象,它用來存放ActionMessage對(duì)
42、象,最后調(diào)用Action基類的saveErrors()方法,saveErrors()方法把ActionMessages 對(duì)象保存在request范圍內(nèi).<html:message>標(biāo)簽:用于顯示正常消息的代碼如下:<html:messages id=”message” message=”true”><td><bean:write name=”message”/></td></html:messages><html:messages> 標(biāo)簽有以下一些重要屬性:name:指定actionMessages對(duì)象存放在r
43、equest或session范圍內(nèi)的key.,標(biāo)簽處理類將根據(jù)這一屬性key來檢索request或session范圍的ActionMessages對(duì)象.Message屬性:指定消息的來源.Id屬性: 用來命名從消息集合中檢索出的每個(gè)ActionMessage對(duì)象.它和<bean:write>標(biāo)簽的name屬性匹配.Struts bean標(biāo)簽庫<bean:message>標(biāo)簽用于輸出Resource Bundle 種的一條消息.<bean:message>標(biāo)簽的bundle屬性指定Resource Bundle 它和struts配置文件的<message
44、-resource>元素的key屬性匹配.如果沒有設(shè)置bundle 屬性,就采用默認(rèn)的Resource Bundle.<bean:message> 標(biāo)簽的key屬性直接指定消息key. Bundle屬性指明資源文件的struts-config.xml文件種的配置的key值.例如: <bean:message bundle=”special” key=”hello”>(詳細(xì)參照:精通struts p339)<bean:write> 標(biāo)簽<bean:write>標(biāo)簽用于在網(wǎng)頁上輸出某個(gè)Bean 或它的屬性的內(nèi)容.<bean:write&g
45、t;標(biāo)簽可以輸出單個(gè)字符串,或責(zé)一個(gè)對(duì)象的某個(gè)屬性,或責(zé)通過迭代器遍歷集合的所有值 <bean:write> 標(biāo)簽的name屬性指定已經(jīng)存在的變量.例如:在action中得到一個(gè)字符串的值,然后在頁面上顯示出來/得到定單狀態(tài)(action中)String orderState=orderService.getOrderState(userOrderId);request.setAttribute("orderState",orderState);/在界面上顯示為(界面中)<bean:write name="orderState"/>
46、;如果希望輸出Bean的某個(gè)屬性值,應(yīng)該同時(shí)設(shè)置<bean:write >標(biāo)簽的name屬性和property屬性. Property屬性指定Bean的屬性.例如:/得到當(dāng)前定單的購貨人信息UserVO uVO =orderService.getUserbyOrderId(userOrderId);request.setAttribute("userVO",uVO);/在頁面上顯示購貨人的信息 <table width="96%" height="80" cellpadding="0" cells
47、pacing="0"> <tr> <td align="right" width="20%">購貨人姓名:</td> <td ><bean:write name="userVO" property="userName"/></td> <td width="20%"> </td> <td align="right" width=&qu
48、ot;20%">聯(lián)系電話:</td> <td ><bean:write name="userVO" property="userTelephone"/></td> </tr> </table>根據(jù)迭代器標(biāo)簽顯示集合的所有內(nèi)容/得到當(dāng)前定單的所有商品的信息List list=orderService.getWareByOrderId(userOrderId);request.setAttribute("wareList",list);/根據(jù)迭代器標(biāo)簽
49、顯示所有內(nèi)容(界面層) <logic:iterate id="ware" name="wareList"> <tr > <td width="14%" ><bean:write name="ware" property="userOrderId"/></td> <td width="14%" ><bean:write name="ware" property="ware
50、Id"/></td> <td width="15%" ><bean:write name="ware" property="name"/></td> <td width="14%" ><bean:write name="ware" property="typeName"/></td> </tr> </logic:iterate>Struts Logic標(biāo)
51、簽庫<logic:match>:判斷變量中是否包含指定的常量字符串<logic:notMatch>:判斷變量中是否不包含指定變量的類<logic:empty>和<logic:notEmpty> 標(biāo)簽<logic:empty> 和<logic:notEmpty>標(biāo)簽判斷指定變量是否為空字符串.例子: 以下代碼先定義一個(gè)字符串變量emptyString ,它是空字符串.接下來<logic:empty>標(biāo)簽判斷emptyString變量是否為空 字符串.其判斷結(jié)果為true.因此將執(zhí)行標(biāo)簽主體的內(nèi)容.<%req
52、uest.setAttribute(“emptyString”,”);%><logic:empty name=”emptyString”>the variable named emptyString is empty!</logic:empty><logic:iterate>標(biāo)簽是Logic標(biāo)簽中最復(fù)雜的標(biāo)簽.也是用途最廣的一個(gè)標(biāo)簽.它能夠在一個(gè)循環(huán)中遍歷數(shù)組,Collection,Enumeration,Iterator 或Map中的所有元素.一:遍歷集合<logic:iterate>的name屬性指定需要進(jìn)行遍歷的集合對(duì)象.它每次從集合
53、中檢索出一個(gè)元素,然后把它存放在page范圍內(nèi).并以id屬性指定的字符串來命名這個(gè)元素.例如:<%Vector animals = new Vertor();animals.addElement(“Dog”);animals.addElement(“Cat”);animals.addElement(“Bird”);animals.addElement(“Chick”);Request.setAttibute(“Animals”,animals);%><logic:iterate id=”element” name=”Animals”><bean:write nam
54、e=”element”></logic:iterate><logic:iterate>標(biāo)簽的length屬性指定需要遍歷的元素的數(shù)目,如果沒有設(shè)置length屬性,就遍歷集合中的所有元素.offset屬性指定開始遍歷的起始位置,默認(rèn)值為”0”,表示中集合的第一個(gè)元素開始遍歷,indexId屬性定義一個(gè)代表當(dāng)前別遍歷的元素序號(hào)的變量.整個(gè)變量存放在page范圍內(nèi).可以被標(biāo)簽主體的<bean:write>標(biāo)簽訪問.例如:<logic:iterate id=”ilement” indexId=”index” name=”Animals” offset=
55、”1” length=”2”><bean:write name=”index” >.<bean:write name=”element”></br></logic:iterate>以上代碼輸出的內(nèi)容為:1. Cat2. Bird設(shè)置被遍歷的變量設(shè)置name屬性,name屬性指定需要遍歷的集合或map.例如:<logic:iterate name=”Animals” id=”element”><bean:write name=”element”/><br/></logic>設(shè)置name屬性和pr
56、operty屬性,name屬性指定一個(gè)javaBean,property屬性指定javaBean的一個(gè)屬性.這個(gè)屬性為需要遍歷的集合或map. 例如:<logic:iterate id=”element” name=”Aninals” indexId=”ind”><bean:write name=”ind”>.<bean:write name=”element” property=”key” ><br/><logic:iterate id=”elementValue” name=”element” property=”value” leng
57、th=”3” offset=”1”>-<bean:write name=”elementValue”></logic:iterate></logic:iterate>設(shè)置collection 屬性,collection屬性指定一個(gè)運(yùn)行時(shí)表達(dá)式,表達(dá)式的運(yùn)算結(jié)果為需要遍歷的集合或map.例如:<logic:iterate id=”header” collection=”<% =request.getHeaderNames%>”><bean:write name=”header”/><br/></log
58、ic:iterate>13、JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?動(dòng)態(tài)INCLUDE用jsp:include動(dòng)作實(shí)現(xiàn) <jsp:include page="included.jsp" flush="true" />它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁面,并且可以帶參數(shù)。靜態(tài)INCLUDE用include偽碼實(shí)現(xiàn),定不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁面<% include file="included.htm" %> Ø Ajax 篇1. ajax是什么 Ajax
59、 是 Asynchronous JavaScript and XML(以及 DHTML 等)的縮寫。ajax不是一項(xiàng)新技術(shù),只是多種技術(shù)的綜合,或者是設(shè)計(jì)方式.包括javascript,xhtml和css,dom,xml和XSTL,xmlHttpRequest等技術(shù).2. ajax實(shí)現(xiàn)的原理 ajax采用異步傳輸方式, 用戶觸發(fā)事件和向服務(wù)器發(fā)起請求是在一個(gè)線程上. Ajax主要是通過XMLHTTPRequest對(duì)象調(diào)用服務(wù)端方法,然后將服務(wù)端返回的數(shù)據(jù)顯示在客戶端. 3. ajax框架的基本流程對(duì)象初始化à 發(fā)送請求à 服務(wù)器接受à服務(wù)器返回-.>客戶端接
60、受à修改客戶端頁面內(nèi)容。4. dwr的實(shí)現(xiàn)原理. Dwr是ajax的開源框架。dwr包含兩個(gè)主要部分:其一是運(yùn)行在瀏覽器客戶端的javascript, 這部分被用來與服務(wù)端通信,并更新頁面內(nèi)容; 其二是運(yùn)行在服務(wù)器端的java servlet,這部分用來處理請求將響應(yīng)結(jié)構(gòu)發(fā)送給瀏覽器.5. ajax 開發(fā)步驟.(1) 初始化xmlHttpRequest 對(duì)象.(2) 設(shè)置xmlHttpRequest對(duì)象的onreadystatechange屬性,指定服務(wù)器返回響應(yīng)數(shù)據(jù)時(shí)要調(diào)用的回調(diào)函數(shù). 即指定相應(yīng)處理函數(shù).(3) 調(diào)用xmlHttpRequest對(duì)象的open方法創(chuàng)建http請求.(4) 調(diào)用xmlHttpRequest對(duì)象的setResourceHeader等方法,設(shè)置必要的http請求頭信息.(5) 調(diào)用xmlHttpRequest對(duì)象的send方法,發(fā)送之前創(chuàng)建的http請求.(6) 根據(jù)xmlHttpRequest對(duì)象的open方法參數(shù),決定等待或者不等到服務(wù)器返回響應(yīng)數(shù)據(jù),如果服務(wù)器返回響應(yīng)數(shù)據(jù),則將控制權(quán)交給之前設(shè)置的回調(diào)函數(shù). Ø Spring 篇一. 基礎(chǔ)知識(shí)1. 對(duì)IOC的理解. IOC的全稱是: Inversion of Control(即: 控制反轉(zhuǎn)). 理解: 在傳統(tǒng)的應(yīng)用程序中,控制權(quán)在應(yīng)用程序本身,程序的控制流程
溫馨提示
- 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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 定向委托加工合同:度項(xiàng)目
- 煙花爆竹定制加工合同協(xié)議
- 城市規(guī)劃設(shè)計(jì)服務(wù)合同
- 14《普羅米修斯》(教學(xué)設(shè)計(jì))-2024-2025學(xué)年統(tǒng)編版語文四年級(jí)上冊
- 購房者商品房分期付款合同
- 家庭和睦共建合同
- Module 3 Unit 1 What are you doing?(教學(xué)設(shè)計(jì))-2024-2025學(xué)年外研版(三起)英語四年級(jí)上冊
- 10 我們當(dāng)?shù)氐娘L(fēng)俗2023-2024學(xué)年四年級(jí)下冊道德與法治同步教學(xué)設(shè)計(jì)(統(tǒng)編版)
- 婚內(nèi)借款合同范本
- 2 江南 教學(xué)設(shè)計(jì)-2024-2025學(xué)年語文一年級(jí)上冊統(tǒng)編版
- 室內(nèi)墻地磚鋪貼施工技術(shù)交底
- 醫(yī)院培訓(xùn)課件:《成人住院患者靜脈血栓栓塞癥的預(yù)防護(hù)理》
- 國企單位聘用職業(yè)經(jīng)理人合同范本
- 2024-2030年中國廢棄電器電子產(chǎn)品回收處理行業(yè)發(fā)展?fàn)顩r及投資規(guī)劃分析報(bào)告版
- 2024年河北省公務(wù)員考試《行測》真題及答案解析
- 期末復(fù)習(xí)試題(試題)-2024-2025學(xué)年四年級(jí)上冊數(shù)學(xué)人教版
- JJF 2161-2024焊接檢驗(yàn)尺校準(zhǔn)規(guī)范
- 《實(shí)踐論》(原文)毛澤東
- 高考化學(xué)一輪復(fù)習(xí)課件微專題19 電解質(zhì)溶液圖像分析
- 2024年中考語文復(fù)習(xí)分類必刷:非連續(xù)性文本閱讀(含答案解析)
- 全國川教版信息技術(shù)八年級(jí)下冊第一單元第3節(jié)《打印展示作品》教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論