學(xué)習(xí)啦 > 創(chuàng)業(yè)指南 > 職場 > 面試題 > STRUTS常見面試題

STRUTS常見面試題

時間: 護托1061 分享

STRUTS常見面試題

  Struts框架的數(shù)據(jù)驗證可分為幾種類型?下面就由學(xué)習(xí)啦小編為大家介紹一下STRUTS常見面試題的文章,歡迎閱讀。

  STRUTS常見面試題篇1

  1. 簡述Struts框架的初始化流程。

  答案:對于采用Struts框架的Web應(yīng)用,在Web應(yīng)用啟動時就會加載并初始化控制器ActionServlet

  ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到ActionMappings對象中。

  在Struts framework中, Controller主要是ActionServlet,但是對于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個組件協(xié)調(diào)完成(也許這幾個組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。

  其中,Action扮演了真正的控制邏輯的實現(xiàn)者,而ActionMapping和ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運行方向。

  2. 簡述Struts框架響應(yīng)客戶請求的工作流程

  1. 檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回用戶請求路徑無效的信息。

  2. 如果ActionForm實例不存在,就創(chuàng)建一個ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中。

  3. 根據(jù)配置信息決定是否需要表單驗證。如果需要驗證,就調(diào)用ActionForm的validate()方法。

  4. 如果ActionForm的validate()方法返回null或返回一個不包含ActionMessge的ActionErrors對象,就表示表單驗證成功。

  5. ActionServlet根據(jù)AtionMapping實例包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個Action。如果應(yīng)的Action實例不存在,就先創(chuàng)建這個實例,然后調(diào)用Action的execute()方法。

  6. Action的execute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指向的JSP組件。

  7. ActionForward對象指向的JSP組件生成動態(tài)頁面,返回給客戶。

  對于以上流程的步驟(4),如果ActionForm的validate()方法返回一個包含一個或多個ActionError的ActionErrors對象,就表示表單驗證失敗,此時ActionServlet將直接把請求轉(zhuǎn)發(fā)給包含客戶提交表單的JSP組件。在這種情況下,不會再創(chuàng)建Action對象并調(diào)用Action的execute方法。

  3 Struts框架的數(shù)據(jù)驗證可分為幾種類型?

  表單驗證(由ActionForm Bean處理):如果用戶沒有在表單中輸入姓名,就提交表單,將生成表單驗證錯誤

  業(yè)務(wù)邏輯驗證(由Action處理):如果用戶在表單中輸入的姓名為“Monster”,按照本應(yīng)用的業(yè)務(wù)規(guī)則,不允許向“Monster”打招呼,因此將生成業(yè)務(wù)邏輯錯誤。

  4 簡述Form Bean的表單驗證流程。

  1、當(dāng)用戶提交了HTML表單,Struts框架自動把表單數(shù)據(jù)組裝到ActionForm Bean中。

  2、接下來Struts框架會調(diào)用ActionForm Bean的validate()方法進行表單驗證。

  3、如果validate()方法返回的ActionErrors 對象為null,或者不包含任何ActionMessage對象,就表示沒有錯誤,數(shù)據(jù)驗證通過。

  4、如果ActionErrors中包含ActionMessage對象,就表示發(fā)生了驗證錯誤,Struts框架會把ActionErrors對象保存到request范圍內(nèi),然后把請求轉(zhuǎn)發(fā)到恰當(dāng)?shù)囊晥D組件,視圖組件通過標(biāo)簽把request范圍內(nèi)的ActionErrors對象中包含的錯誤消息顯示出來,提示用戶修改錯誤。

  5在struts配置文件中action元素包含哪些屬性和子元素?

  path屬性:指定請求訪問Action的路徑

  type屬性:指定Action的完整類名

  name屬性:指定需要傳遞給Action的ActionForm Bean

  scope屬性:指定ActionForm Bean的存放范圍

  validate屬性:指定是否執(zhí)行表單驗證

  input屬性:指定當(dāng)表單驗證失敗時的轉(zhuǎn)發(fā)路徑。

  元素還包含一個子元素,它定義了一個請求轉(zhuǎn)發(fā)路徑。

  6. 簡單敘述ActionForm Bean的作用

  1、ActionForm Bean也是一種JavaBean,除了具有一些JavaBean的常規(guī)方法,還包含一些特殊的方法,用于驗證HTML表單數(shù)據(jù)以及將其屬性重新設(shè)置為默認(rèn)值。

  2、Struts框架利用ActionForm Bean來進行View組件和Controller組件之間表單數(shù)據(jù)的傳遞。

  3、Struts框架把View組件接受到的用戶輸入的表單數(shù)據(jù)保存在ActionForm Bean中,把它傳遞給Controller組件,Controller組件可以對ActionForm Bean中的數(shù)據(jù)進行修改JSP文件使用Struts標(biāo)簽讀取修改后的ActionForm Bean的信息,重新設(shè)置HTML表單。

  7 .敘述ActionForm執(zhí)行步驟

  (1)檢查Action的映射,確定Action中已經(jīng)配置了對ActionForm的映射

  (2)根據(jù)name屬性,查找form bean的配置信息

  (3)檢查Action的formbean的使用范圍,確定在此范圍下,是否已經(jīng)有此form bean的實例。

  (4)假如當(dāng)前范圍下,已經(jīng)存在了此form bean的實例,而是對當(dāng)前請求來說,是同一種類型的話,那么就重用。

  (5)否則,就重新構(gòu)建一個form bean的實例

  (6)form bean的reset()方法備調(diào)用

  (7)調(diào)用對應(yīng)的setter方法,對狀態(tài)屬性賦值

  (8)如果validatede的屬性被設(shè)置為true,那么就調(diào)用form bean的validate()方法。

  (9)如果validate()方法沒有返回任何錯誤,控制器將ActionForm作為參數(shù),傳給Action實例的execute()方法并執(zhí)行。

  8、FormBean的作用

  答:FormBean是一種JAVABean,除了具有JAVABean的常規(guī)方法,還包含一些特殊方法,用于驗證表單數(shù)據(jù),以及將其屬性重新設(shè)置為默認(rèn)值。 FormBean用來進行View組件和Controller組件之間表單數(shù)據(jù)的傳遞。View組件接收到用戶輸入的表單數(shù)據(jù),保存在FormBean中,把它傳遞給Controller組件,Controller組件可以對FormBean中的數(shù)據(jù)進行修改。

  9、Forward與Global-Forward的區(qū)別

  答:Forward是根據(jù)Action return的值找到對應(yīng)的JSP頁。當(dāng)多個Action共同return同一個值時,可將這個Forward元素寫在Global-Forward中。

  STRUTS常見面試題篇2

  1.問題:在Struts應(yīng)用的視圖中包含哪些組件?

  (A) JSP

  (B) Servlet

  (C) ActionServlet

  (D) Action

  (E) 代表業(yè)務(wù)邏輯或業(yè)務(wù)數(shù)據(jù)的JavaBean

  (F) EJB

  (G) 客戶化標(biāo)簽

  2問題:在Struts應(yīng)用的控制器中包含哪些組件?

  (A) JSP

  (B) Servlet

  (C) ActionServlet

  (D) Action

  (E)代表業(yè)務(wù)邏輯或業(yè)務(wù)數(shù)據(jù)的JavaBean

  (F) EJB

  (G) 客戶化標(biāo)簽

  3.在struts配置文件中action元素包含哪些屬性和子元素?

  path屬性:指定請求訪問Action的路徑

  type屬性:指定Action的完整類名

  name屬性:指定需要傳遞給Action的ActionForm Bean

  scope屬性:指定ActionForm Bean的存放范圍

  validate屬性:指定是否執(zhí)行表單驗證

  input屬性:指定當(dāng)表單驗證失敗時的轉(zhuǎn)發(fā)路徑。

  元素還包含一個子元素,它定義了一個請求轉(zhuǎn)發(fā)路徑。

  4. 問題:在Struts應(yīng)用的模型中包含哪些組件?

  (A) JSP

  (B) Servlet

  (C) ActionServlet

  (D) Action

  (E) 代表業(yè)務(wù)邏輯或業(yè)務(wù)數(shù)據(jù)的JavaBean

  (F) EJB

  (G) 客戶化標(biāo)簽

  5. 問題: struts框架中,關(guān)于FormBean,下列說法正確的是:

  A FormBean是一種數(shù)據(jù)bean,主要用來封裝表單提交上來的數(shù)據(jù),并把這些數(shù)據(jù)傳遞給Action

  B 在FormBean中可以對頁面上傳遞來的參數(shù)進行一下格式上的驗證,這種驗證是一種客戶端的驗證

  C 用戶每次提交表單,都會產(chǎn)生一個新的FormBean實例

  D 動態(tài)FormBean不能進行驗證操作

  6. 問題:struts框架中,在一個Action的配置信息中,name屬性指的是:

  A 當(dāng)前action實例的名字

  B 當(dāng)前action所在的類的名字

  C 該Action中調(diào)用的FormBean的實例的名字

  D 該Action中調(diào)用的FormBean的類的所在包名

  7. 問題:關(guān)于struts項目中的類與MVC模式的對應(yīng)關(guān)系,說法錯誤的是?

  A Jsp文件實現(xiàn)視圖View的功能

  B ActionServlet這一個類是整個struts項目的控制器

  C ActionForm、Action都屬于Model部分

  D 一個struts項目只能有一個Servlet

  8、問題:以下哪些說法是正確的?

  選項:(A)每個HTTP請求對應(yīng)一個單獨的ActionServlet實例

  (B)對于每個請求訪問HelloAction的HTTP請求,Struts框架會創(chuàng)建一個單獨的HelloAction實例。

  (C)每個子應(yīng)用對應(yīng)一個單獨的RequestProcessor實例

  (D)每個子應(yīng)用對應(yīng)一個單獨的web.xml文件

  9 ActionForm Bean對象是由誰創(chuàng)建的?

  (A) 標(biāo)簽處理類

  (B) ActionServlet

  (C) RequestProcessor

  (D) Action

  10、struts框架,錯誤的是?

  A Struts中無法完成上傳功能

  B Struts框架基于MVC模式

  C Struts框架容易引起流程復(fù)雜、結(jié)構(gòu)不清晰等問題

  D Struts可以有效地降低項目的類文件數(shù)目

  STRUTS常見面試題篇3

  1、問題:把靜態(tài)文本放在Resource Bundle中,而不是直接在JSP文件中包含這些靜態(tài)文本,有什么優(yōu)點?

  提高可維護性 提高可重用性 支持國際化

  2. 問題:關(guān)于struts項目中的類與MVC模式的對應(yīng)關(guān)系,說法錯誤的是?

  A Jsp文件實現(xiàn)視圖View的功能

  B ActionServlet這一個類是整個struts項目的控制器

  C ActionForm、Action都屬于Model部分

  D 一個struts項目只能有一個Servlet

  3. Struts工作機制?為什么要使用Struts?

  工作機制:

  Struts的工作流程:

  在web應(yīng)用啟動時就會加載初始化ActionServlet,ActionServlet從

  struts-config.xml文件中讀取配置信息,把它們存放到各種配置對象

  當(dāng)ActionServlet接收到一個客戶請求時,將執(zhí)行如下流程.

  -(1)檢索和用戶請求匹配的ActionMapping實例,如果不存在,就返回請求路徑無效信息;

  -(2)如果ActionForm實例不存在,就創(chuàng)建一個ActionForm對象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對象中;

  -(3)根據(jù)配置信息決定是否需要表單驗證.如果需要驗證,就調(diào)用ActionForm的validate()方法;

  -(4)如果ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors對象, 就表示表單驗證成功;

  -(5)ActionServlet根據(jù)ActionMapping所包含的映射信息決定將請求轉(zhuǎn)發(fā)給哪個Action,如果相應(yīng)的 Action實例不存在,就先創(chuàng)建這個實例,然后調(diào)用Action的execute()方法;

  -(6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉(zhuǎn)發(fā)給 ActionForward對象指向的JSP組件;

  -(7)ActionForward對象指向JSP組件生成動態(tài)網(wǎng)頁,返回給客戶;

  為什么要用:

  JSP、Servlet、JavaBean技術(shù)的出現(xiàn)給我們構(gòu)建強大的企業(yè)應(yīng)用系統(tǒng)提供了可能。但用這些技術(shù)構(gòu)建的系統(tǒng)非常的繁亂,所以在此之上,我們需要一個規(guī)則、一個把這些技術(shù)組織起來的規(guī)則,這就是框架,Struts便應(yīng)運而生。

  基于Struts開發(fā)的應(yīng)用由3類組件構(gòu)成:控制器組件、模型組件、視圖組件

  4. Struts的validate框架是如何驗證的?

  在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調(diào)用。

  5. 說下Struts的設(shè)計模式

  MVC模式: web應(yīng)用程序啟動時就會加載并初始化ActionServler。用戶提交表單時,一個配置好的ActionForm對象被創(chuàng)建,并被填入表單相應(yīng)的數(shù)據(jù),ActionServler根據(jù)Struts-config.xml文件配置好的設(shè)置決定是否需要表單驗證,如果需要就調(diào)用ActionForm的Validate()驗證后選擇將請求發(fā)送到哪個Action,如果Action不存在,ActionServlet會先創(chuàng)建這個對象,然后調(diào)用 Action的execute()方法。Execute()從ActionForm對象中獲取數(shù)據(jù),完成業(yè)務(wù)邏輯,返回一個ActionForward對象,ActionServlet再把客戶請求轉(zhuǎn)發(fā)給ActionForward對象指定的jsp組件,ActionForward對象指定的jsp生成動態(tài)的網(wǎng)頁,返回給客戶。

  6、STRUTS的應(yīng)用(如STRUTS架構(gòu))

  Struts 是采用Java Servlet/JavaServer Pages技術(shù),開發(fā)Web應(yīng)用程序的開放源碼的framework。采用Struts能開發(fā)出基于MVC(Model-View-Controller)設(shè)計模式的應(yīng)用構(gòu)架。Struts有如下的主要功能:一.包含一個controller servlet,能將用戶的請求發(fā)送到相應(yīng)的Action對象。二.JSP自由tag庫,并且在controller servlet中提供關(guān)聯(lián)支持,幫助開發(fā)員創(chuàng)建交互式表單應(yīng)用。三.提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。

3204682