




已閱讀5頁,還剩1頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Struts2面試問答1. Q:Struts2都有哪幾個核心部分,分別介紹一下。 A:Struts2有五個核心,分別是,核心控制器StrtusPrepareAndExecuteFilter,Action類(繼承自ActionSupport,是開發人員主要編碼的部分),result(xml中的結果節點,常用的有dispatcher,redirect,actionRedirect.以及自定義result,默認的為dispatcher),攔截器Interceptor(內置常用的攔截器有param攔截器,fileUpload攔截器,validation攔截器,workflow攔截器,exception攔截器等等),還有ognl表達式(一種幫助前端與后臺數據交互的腳本語言)2. Q:你認為的Struts1和Struts2都有哪些主要區別吧? A:我認為2代和1代的最大區別是核心控制器的轉變,1代的核心控制器是一個servlet, 而2代的核心控制器是filter(前期是DispatcherFilter,后期是StrtusPrepareAndExecuteFilter)。1代在action的execute調用時要將HttpRequest和HttpResponse傳入方法中去,因此與ServletAPI強耦合在一起,運行更加依賴web容器,一旦脫離web容器,程序在測試或者其他方面將變得舉步維艱。而且在表示層方面,struts1代只支持jsp,但隨著網絡發展,前端表示層更加多樣化,struts1代的能力捉襟見肘。3. Q:你剛說普通Action繼承自ActionSupport類,那你說說你了解的ActionSupport類吧。 A:ActionSupport類中內置了常用的字符串常量,類似success,input,error,以及execute方法,這些都來自于ActionSupport實現的Action接口。除此之外,還實現了Validateable,ValiedateAware,Serializable等七個接口,主要用于數據校驗,本地化等功能。4. Q:Struts2的攔截器的執行過程是什么?你認為可以抽象為什么邏輯結構?A:攔截器圍繞action和result的執行而執行,和servletFilter的實現原理差不多,以鏈式執行,對真正要執行的方法進行攔截。首先執行action配置的攔截器,在action和result執行之后,攔截器再一次執行(和上一次執行的順序恰好相反),在此鏈式的執行過程中,任何一個攔截器都可以直接返回,從而終止余下的攔截器,action和result的執行。(見書上91頁)5. Q:嗯,那你在開發過程中都實現哪些攔截功能? A:我在項目中負責登陸模塊,所以會經常自定義攔截未登陸操作的行為,一般自定義Inteceptor來實現,主要步驟主要實現內置Interceptor接口,之后重寫init,destroy,和最重要的intercept方法,或者直接繼承AbstractInteceptor類,只重寫intetceptor方法。6. Q:Struts2與ServletAPI對象產生互動有幾種方式,分別介紹一下 A:有解耦和耦合兩種方式。解耦:為了避免action類與servletAPI對象耦合在一起,方便action類的測試,struts2提供了普通的map對象來代替傳統的request,session,servletcontext。通過調用actioncontext來獲取到request,session等對象。耦合:雖然直接訪問servletAPI會使action類與之強耦合在一起,但是有時候確實需要直接訪問這些對象。通過調用ServletActionContext類。此類是ActionContext類的子類,通過調用這個類來實現直接訪問ServletAPI對象。7. Q:Struts2怎樣實現數據的校驗? A:上面說了,由于ActionSupport類實現了Validateable接口,所以可以直接在Action 類中重寫此接口的validate方法,用于進行簡單的數據校驗。也可以根據struts.xml中定義的action的名稱來定義不同的validateXxx()。執行順序是先執行自定義的validateXxx(),最后執行validate方法。而這兩種方法適用于簡單的數據校驗,但當驗證規則比較復雜時,需要編寫大量繁瑣的代碼實現,容易導致Action類的臃腫,所以,struts2向開發人員提供了豐富的驗證框架。常用的數據校驗器有required,requiredstring,int,stringlength,regex,date,double等等。使用這些驗證框架時,要編寫驗證文件和校驗規則。編寫時注意驗證文件要和Action放在用一個包下,采用ClassName-validation.xml的命名形式。如果項目中同時使用驗證框架和validate方法進行校驗,那么按照struts2默認的調用攔截器順序,將首先執行驗證框架,再執行代碼驗證。8. Q:實際開發中你會選擇腳本驗證還是使用Struts2內置的驗證方法,為什么? A:我經手的項目中由于服務器承受壓力有限,所以我們的需求是將所有的驗證操作放在前端腳本執行。這樣的好處是減輕服務器后臺壓力,不過缺點也顯而易見,前端文件容易被蓄意篡改,執行安全性減低。9. Q:你在開發過程中在前端使用的標簽庫是什么? A:為了后臺和前端數據產生更好的交互。我們有一部分前端頁面使用struts標簽和ognl表達式。Ognl表達式主要在程序中負責兩件事,表達式語言和類型轉換器。10. Q:那通過ognl表達式讀取后臺action中的數據時是通過什么讀取的?A:通過ValueStack(值棧)。值棧就是框架創建的一個存儲區域,用來保存Model對象。框架在創建每個請求時,都會創建該請求對應的運行環境,這時會創建值棧和請求對應的Action實例,并將Action實例壓入值棧中。11. Q:你有沒有注意過在使用iterator標簽迭代一個集合時值棧中大體是怎么變化的?A:iterator標簽在迭代過程中,會把迭代的每一個對象暫時壓入值棧的棧頂,這樣在該標簽內部可以直接訪問元素對象的屬性和方法,在iterator標簽整體執行完畢后,位于棧頂的對象即被刪除。然后再次重復該過程。12. Q:你在開發中自定義過類型轉換器嗎?如何實現的? A: 編寫類,繼承自StrutsTypeConveter抽象類,重寫convertFromString和convertToString方法。之后進行配置,轉換器和類之間通過properties文件建立關聯。有兩種配置方式,一種是應用于全局范圍的類型轉換器,一種是應用與特定類型的類型轉換器。13. Q:描述一下Struts2每次請求的大體執行過程? A:當web容器收到一個請求時,經過核心控制器,它調用ActionMapper確定請求調用哪個Action,ActionMapper返回了一個收集了Action詳細信息的ActionMapping對象。之后,核心控制器將委派權交給ActionProxy,ActionProxy調用配置管理器(ConfigurationManager)從配置文件中讀取配置信息,然后創建ActinInvocation對象。(之后就是調用配置攔截器的操作,見第4個問題。)14. Q:Strtus2的默認配置文件以及開發struts2插件時使用的配置文件?A:Struts-default.xml和Struts-plugin.xml15. Q:說說struts.xml中各個配置元素的作用A:常用的有package,constant,action,result,interceptor等元素。Constant是用于定義常量的,改變struts2框架的一些行為,這個元素包括name和value屬性;package元素是一個邏輯單元,action,result和interceptor元素等都包括其中,package有一個最大的特性就是可以繼承,通過繼承實現其他package的所有定義;action元素對應相應的action類,result元素對應執行完action之后相應的結果集,而interceptor則是為一個action配置的攔截器。16. Q:如何使用struts2實現文件上傳和下載?A:上傳:首先廷加所需要的jar包,在前端頁面利用struts標簽的file標簽來讓用戶選擇要上傳的文件。后臺action類中定義File類型的字段接收提交的數據。(此處引出自己的項目中是如何實現文件上傳的)。下載:下載時需要注意在配置文件中,result的tpye要設置成stream類型,根據下載文件的類型在result的子節點中通過param設置contentType和inputName,result的method要指定為一個返回值為字符串的空方法。(此處引出i自己的項目中是如何實現文件下載。)17. Q:最后你再說說ActionContext中都包括哪些對象?A:1.ValueStack。2.parameters。3.application。4.session。5.attr。6.request在ognl表達式的解析中,是必須針對值棧中的某個對象的,默認為ValueStack(這也是為什么訪問值棧中的對象可以直接訪問不需要加任何字符的原因),但也可以明確指定名字的方式將其他對象作為根對象。其他幾個對象都是訪問相關作用域中的數據,唯有attr是按照pageContext-request-session-application的順序來訪問的。1. Web應用與MVC框架通過什么核心文件結合在一起?答:web.xml2. 開發過程中你是如何解決亂碼問題的?說出你所有解決亂碼的方式答:1. 設置文件屬性。2. 設置pageEncoding。3. 在servlet中,request.setCharacterEncoding(“utf-8”)或者response.setContentType(“text/html;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 阿里巴巴筆試題及答案
- 2025年耗盡關機傳感器合作協議書
- 員工合同入股協議書范本
- 中美欠發達地區城市化進程比較
- 關于武漢高端住宅寫字樓酒店市場調查綜合調研報告
- 2025年GPS高空探測系統項目發展計劃
- 查理蘇臨床醫學研究體系
- 影院營運培訓
- 牧場奶牛養殖委托管理與供應鏈整合協議
- 高層管理培訓體系構建
- 2025年貨物購銷合同范本
- 2025屆北京市北京一零一中學生物七下期末質量檢測試題含解析
- 2025陜西延安通和電業有限責任公司供電服務用工招聘103人筆試參考題庫附帶答案詳解
- 2025云南中考:物理必背知識點
- 《生成式人工智能職業技能評估規范》
- 2025年江蘇省南京市玄武區中考一模歷史試卷
- 心血管-腎臟-代謝綜合征患者的綜合管理中國專家共識2025解讀-1
- 【9化二模】2025年5月安徽省合肥市瑤海區5月中考二模化學試卷
- 2025年全國保密教育線上培訓考試試題庫及參考答案(完整版)及答案詳解1套
- 西師大版小學五年級數學(下)期末測試題(帶答案)
- Unit8SectionA1a2d課件人教版八年級英語下冊
評論
0/150
提交評論