1. 程式人生 > >Java面試----2018年最新Struts2面試題

Java面試----2018年最新Struts2面試題

1、描述Struts2的工作原理
答:客戶端傳送請求--》請求經過一系列過濾器--》FilterDispatcher通過ActionMapper來決定這個Request需要呼叫哪個Action --》FilterDispatcher把請求的處理交給ActionProxy--》通過ConfigurationManager詢問Struts配置檔案(Struts.xml),找到需要呼叫的Action類--》ActionProxy建立一個ActionInvocation的例項 --》呼叫Action--》執行完畢,返回結果
2、Struts2中的攔截器有什麼用?列舉框架提供的攔截器名稱?(至少3種,可用中文名)

答:

 1)攔截器是struts2核心組成部分,它提供了一種機制,使得開發者可以定義一個特定的功能模組,這個模組會在Action執行之前或者之後執行,也可以在Action執行之前阻止Action執行。 

 2)常用的攔截器有: 

 chain:在不同請求之間將請求引數在不同名字件轉換,請求內容不變 

 fileUpload:提供檔案上傳。 

 ​i18n:記錄使用者選擇的區域環境 

 logger:輸出Action的名字

 params:將請求中的引數設定到Action中去。

3、Struts2有哪些優點?

答:

 1)在軟體設計上Struts2的應用可以不依賴於Servlet API和struts API。 Struts2的這種設計屬於無侵入式設計; 

 2)攔截器,實現如引數攔截注入等功能;

 3)型別轉換器,可以把特殊的請求引數轉換成需要的型別; 

 4)多種表現層技術,如:JSP、freeMarker、Velocity等;

 5)Struts2的輸入校驗可以對指定某個方法進行校驗;

 6)提供了全域性範圍、包範圍和Action範圍的國際化資原始檔管理實現 

 7) 實現MVC模式,結構清晰,使開發者只關注業務邏輯的實現。有豐富的tag可以用,大大提高了開發效率。(簡要)

4、什麼是OGNL,有什麼用途?如何訪問存放在session中叫user的物件的username屬性
​答:OGNL是Object-Graph Navigation Language的縮寫,也叫物件導航語言。它是Struts的一種功能強大的表示式語言列如:訪問session中的user物件的username屬性:注意的是:使用前需要在頁面頭部匯入taglib prefix="s" uri="/struts-tags"
​5、什麼是國際化,struts2實現國際化的原理?

答:國際化是根據不同的國家和地區的語言文化的不同,所設計的適用於不同地區的編碼格式。 

 實現方法: 

 1)首先在src目錄下新建message_en.properties(英文); 

 2)頁面獲取國際化資訊或者使用 

原理:程式得到當前執行環境的國際/區域,語言環境並存放於Locale,ResourceBundle根據Locale中資訊自動搜尋對應的國際化資原始檔並載入。

6、AJAX是什麼? 描述ajax的原理
答:Ajax又叫非同步重新整理,(JavaScript和xml)原理:使用HttpRequest向伺服器傳送非同步請求,伺服器返回處理結果
7、什麼是反射?請用反射動態建立一個類的物件(寫關鍵程式碼,其它可省略)

答:反射,程式執行時動態獲取型別資訊,完成物件建立,方法呼叫等。

例如:

Class myclass=Class.forNama("包名.類名");
Student stu=Factory.createInstance("stu1");
8、在struts2中如何實現轉發和重定向?
答:在struts.xml中配置type="redirect"(重定向);type="redirectAction"(轉發)
9、Struts2中的type型別有哪些?至少寫4種
答:chain,redirect,redirectAction,json,dispatcher
10、struts2預設能解決get和post提交方式的亂碼問題嗎?
答:不能。struts.i18n.encoding=UTF-8屬性值只能解析POST提交下的亂碼問題。
11、說下Struts的設計模式

答:MVC模式: 

 1)web應用程式啟動時就會載入並初始化ActionServler。

 2)使用者提交表單時,一個配置好的ActionForm物件被建立,並被填入表單相應的資料,ActionServler根據Struts-config.xml檔案配置好的設定決定是否需要表單驗證,如果需要就呼叫ActionForm的Validate()驗證後選擇將請求傳送到哪個Action,如果Action不存在,ActionServlet會先建立這個物件,然後呼叫Action的execute()方法. 

 3)Execute()從ActionForm物件中獲取資料,完成業務邏輯,返回一個ActionForward物件,ActionServlet再把客戶請求轉發給ActionForward物件指定的jsp元件,ActionForward物件指定的jsp生成動態的網頁,返回給客戶。

12、攔截器和過濾器的區別

答: 

 1)攔截器是基於java反射機制的,而過濾器是基於函式回撥的。 

 2)過濾器依賴於servlet容器,而攔截器不依賴於servlet容器。

 3)攔截器只能對Action請求起作用,而過濾器則可以對幾乎所有請求起作用。 

 4)攔截器可以訪問Action上下文、值棧裡的物件,而過濾器不能。 

 5)在Action的生命週期中,攔截器可以多次呼叫,而過濾器只能在容器初始化時被呼叫一次。

13、請你寫出struts2中至少5個的預設攔截器?

答: 

 fileUpload 提供檔案上傳功能 

 i18n 記錄使用者選擇的locale 

 cookies 使用配置的name,value來是指cookies 

 checkbox 添加了checkbox自動處理程式碼,將沒有選中的checkbox的內容設定為false,而html預設情況下不提交沒有選中的 checkbox。 

 chain 讓前一個Action的屬性可以被後一個Action訪問,現在和chain型別的result()結合使用。

 alias 在不同請求之間將請求引數在不同名字件轉換,請求內容不變

14、ActionContext、ServletContext、pageContext的區別?

答: 

 1)ActionContext是當前的Action的上下文環境,通過ActionContext可以獲取到request、session、ServletContext等與Action有關的物件的引用; 

 2)ServletContext是域物件,一個web應用中只有一個ServletContext,生命週期伴隨整個web應用; 

 3)pageContext是JSP中的最重要的一個內建物件,可以通過pageContext獲取其他域物件的應用,同時它是一個域物件,作用範圍只針對當前頁面,當前頁面結束時,pageContext銷燬, 生命週期是JSP四個域物件中最小的。

15、攔截器的生命週期與工作過程?

答: 

 1)每個攔截器都是實現了Interceptor介面的 Java 類; 

 2)init(): 該方法將在攔截器被建立後立即被呼叫, 它在攔截器的生命週期內只被呼叫一次. 可以在該方法中對相關資源進行必要的初始化; 

 3)intercept(ActionInvocation invocation): 每攔截一個動作請求, 該方法就會被呼叫一次; 

 4)destroy: 該方法將在攔截器被銷燬之前被呼叫, 它在攔截器的生命週期內也只被呼叫一次; 

 5)struts2中有內建了18個攔截器。

16、用自己的話簡要闡述struts2的執行流程。

答: Struts 2框架本身大致可以分為3個部分:核心控制器FilterDispatcher、業務控制器Action和使用者實現的企業業務邏輯元件。   1)核心控制器FilterDispatcher是Struts 2框架的基礎,包含了框架內部的控制流程和處理機制。 

 2)業務控制器Action和業務邏輯元件是需要使用者來自己實現的。使用者在開發Action和業務邏輯元件的同時,還需要編寫相關的配置檔案,供核心控制器FilterDispatcher來使用。 

 Struts 2的工作流程相對於Struts 1要簡單,與WebWork框架基本相同,所以說Struts 2是WebWork的升級版本。 

 基本簡要流程如下:

 1)客戶端瀏覽器發出HTTP請求。 

 2)根據web.xml配置,該請求被FilterDispatcher接收。 

 3)根據struts.xml配置,找到需要呼叫的Action類和方法, 並通過IoC方式,將值注入給Aciton。 

 4)Action呼叫業務邏輯元件處理業務邏輯,這一步包含表單驗證。 

 5)Action執行完畢,根據struts.xml中的配置找到對應的返回結果result,並跳轉到相應頁面。

 6)返回HTTP響應到客戶端瀏覽器。

注:另有需要JAVA、Android、IOS、Python、C++、HTML5等全套程式設計視訊教程的朋友,請關注微信公眾號trteach圖靈技術社群”獲取資源~~~

相關推薦

Java面試----2018最新Struts2試題

1、描述Struts2的工作原理答:客戶端傳送請求--》請求經過一系列過濾器--》FilterDispatcher通過ActionMapper來決定這個Request需要呼叫哪個Action --》FilterDispatcher把請求的處理交給ActionProxy--》通

2018最新PHP試題

面試之前多看看公司的資料,可以看出面試的公司主要做什麼,電商,資料庫,php函式,sql的優化,介面,session和cookie等經常會問到,都是必問之題,這其中有一部分題目摘抄自網路,回答也不錯 1.請自我介紹一下? 答:我叫xxx

Java面試----2018Nginx常見面試題

1、請解釋一下什麼是Nginx?答:Nginx是一個web伺服器和反向代理伺服器,用於HTTP、HTTPS、SMTP、POP3和IMAP協議。2、請列舉Nginx的一些特性?答:Nginx伺服器的特性包括:  1)反向代理/L7負載均衡器  2)嵌入式Perl直譯器  3)動

#Java面試-2018MyBatis常見實用試題2

1、Mybatis動態sql是做什麼的?都有哪些動態sql?能簡述一下動態sql的執行原理不? 答: 1)Mybatis動態sql可以讓我們在Xml對映檔案內,以標籤的形式編寫動態sql,完成邏輯判斷和動態拼接sql的功能。 如果有想要學習java的小夥伴,可來

2017最新企業試題之shell(一)

2017年最新企業面試題之shell2017年最新企業面試題之shell(一)**********************************************企業Shell面試題1:批量生成隨機字符文件名案例 ********************************************

2017最新企業試題之shell(三)

2017年最新企業面試題之shell(三)2017年最新企業面試題之shell(三)練習題1:寫一個shell腳本,類似於日誌切割,系統有個logrotate程序,可以完成歸檔。但現在我們要自己寫一個shell腳本實現歸檔。舉例: 假如服務的輸出日誌是1.log,我要求每天歸檔一個,1.log第二天就變成1.

2018大數據試題總結

shuff 排序 2018年 split t對象 默認 數據庫 cmp one 目前面試了多家大數據開發工程師,成長了很多,也知道了很多知識,下面和大家分享一下我遇到的面試題和答案。 1.kafka集群的規模,消費速度是多少。 答:一般中小型公司是10個節點,每秒20M左右

2018PHP工程師試題

1、TP的特性有哪些? 1.多表查詢非常方便,在model中幾句程式碼就可以完成對多表的關聯操作 2.融合了smarty模板,使前後臺分離 3.支援多種快取技術,尤其對memcache技術支援非常好 4.命名規範,模型,檢視,控制器嚴格遵循命名規則,通過命名一一對應 5.支援多種url模

2018大資料試題總結

目前面試了多家大資料開發工程師,成長了很多,也知道了很多知識,下面和大家分享一下我遇到的面試題和答案。 1.kafka叢集的規模,消費速度是多少。 答:一般中小型公司是10個節點,每秒20M左右。 2.hdfs上傳檔案的流程。 答:這裡描述的 是一個256M的檔

20189月試題彙總

以下為這段時間參加幾家公司面試記錄下來的部分面試題: 一、Spring 1、談談自己對SpringAOP和IOC的理解,核心機制、原理及專案中的運用。 2、Spring上下文的載入方式有哪些? 3、以往專案中是如何對事務進行管理的? 4、Autowired和reso

2018京東android試題總結

本著去積累經驗的心態去京東總部參觀了一下,順便面了一下試。首先說下,現在類似bat這種一流公司在網上投簡歷基本就是石沉大海,原因很簡單,每天都會有成百上千份簡歷投過去,假如你是人事,你會去看嗎,所以想去這種一流公司的可以找獵頭或者內推。好了不廢話了,說下我的面試經歷吧,這次的

2018最新JAVA試題總結之資料庫(3)

轉自於:https://zhuanlan.zhihu.com/p/39804394   1、MySQL的delete與truncate區別? 回答:delete語句執行刪除的過程是每次從表中刪除一行,並且同時將該行的刪除操作作為事務記錄在日誌中儲存以便進行回滾操作,不清空AUTO_INCREM

2018最新JAVA試題總結之基礎(1)

轉自於:https://zhuanlan.zhihu.com/p/39322967   1、JAVA中能建立volatile陣列嗎?volatile能使得一個非原子操作變成原子操作嗎? 回答: 能,Java 中可以建立 volatile 型別陣列,不過只是一個指向陣列的引用,而不是整個陣列。J

2018最新JAVA試題總結之框架(4)

轉自於:https://zhuanlan.zhihu.com/p/40098726   1、談談對spring框架的瞭解 ,spring有什麼作用(IOC,AOP),spring的核心是什麼?回答:Spring是一個開源框架,它是為了解決企業應用開發的複雜性而建立的。框架的主要優勢之一就是其分層

2018 最新Java試題

溫馨提示:本文適合初,中級水平。如果是面試高階需要多瞭解一下多執行緒高併發以及底層原理原始碼等知識。 AOP與IOC的概念(即spring的核心) a) IOC:Spring是開源框架,使用框架可以使我們減少工作量,提高工作效率並且它是分層結構,即相對應的層處理對應的業務

2018最新Java試題及答案整理(持續完善中…)

下列面試題都是在網上收集的,本人抱著學習的態度找了下參考答案,有不足的地方還請指正 基礎篇 基本功 面向物件特徵 封裝,繼承,多型和抽象 封裝 封裝給物件提供了隱藏內部特性和行為的能力。物件提供一些能被其他物件訪問的方法來改 變它內部的資料。在 Ja

20185-7月面試經歷總結:阿里試題

第一輪:電話初面 第二輪:技術面談【技術職位儘量避免多談管理上的工作】 第三輪:高管複試 第四輪:HR最後確認 一面:首先確認對阿里的意向度(如果異地更會考慮對工作地點(杭州)的意向度!阿里很看重這個);其次面試官一般會針對您所做過的專案來做具體技術的交流,會比較

海康威視2018屆校園招聘Java/c++內推/網申試題2017

海康威視內推/網申面試題目更新版-17/9/17/////////////////////////////////////////////////////////////////////////////面試套題一、 晚上在實驗室突然接到來一個自杭州的電話,海康威視的電話面

2018php最新基礎試題

1、PHP語言的一大優勢是跨平臺,什麼是跨平臺?PHP的執行環境最優搭配為Apache+MySQL+PHP,此執行環境可以在不同作業系統(例如windows、Linux等)上配置,不受作業系統的限制,所以叫跨平臺2、WEB開發中資料提交方式有幾種?有什麼區別?百度使用哪種方式

2018最新】 iOS試題及答案

(1)#import指令是Object-C針對@include的改進版本,能確保引用的檔案只會被引用一次,不會陷入遞迴包含的問題中;(2)@import與@class的區別:    #import會鏈入該標頭檔案的全部資訊,包括實體變數和方法等;二@class只是告訴編譯器,其後面宣告的名稱是類的名稱,至於這