1. 簡述Struts框架的初始化流程。html
答案:對於採用Struts框架的Web應用,在Web應用啓動時就會加載並初始化控制器ActionServletweb
ActionServlet從struts-config.xml文件中讀取配置信息,把它們存放到ActionMappings對象中。設計模式
在Struts framework中, Controller主要是ActionServlet,可是對於業務邏輯的操做則主要由Action、ActionMapping、ActionForward這幾個組件協調完成(也許這幾個組件,應該劃分到模型中的業務邏輯一塊)。架構
其中,Action扮演了真正的控制邏輯的實現者,而ActionMapping和ActionForward則指定了不一樣業務邏輯或流程的運行方向。app
2. 簡述Struts框架響應客戶請求的工做流程框架
1. 檢索和用戶請求匹配的ActionMapping實例,若是不存在,就返回用戶請求路徑無效的信息。jsp
2. 若是ActionForm實例不存在,就建立一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中。ui
3. 根據配置信息決定是否須要表單驗證。若是須要驗證,就調用ActionForm的validate()方法。spa
4. 若是ActionForm的validate()方法返回null或返回一個不包含ActionMessge的ActionErrors對象,就表示表單驗證成功。設計
5. ActionServlet根據AtionMapping實例包含的映射信息決定將請求轉發給哪一個Action。若是應的Action實例不存在,就先建立這個實例,而後調用Action的execute()方法。
6. Action的execute()方法返回一個ActionForward對象,ActionServlet再把客戶請求轉發給ActionForward對象指向的JSP組件。
7. ActionForward對象指向的JSP組件生成動態頁面,返回給客戶。
對於以上流程的步驟(4),若是ActionForm的validate()方法返回一個包含一個或多個ActionError的ActionErrors對象,就表示表單驗證失敗,此時ActionServlet將直接把請求轉發給包含客戶提交表單的JSP組件。在這種狀況下,不會再建立Action對象並調用Action的execute方法。
3 Struts框架的數據驗證可分爲幾種類型?
表單驗證(由ActionForm Bean處理):若是用戶沒有在表單中輸入姓名,就提交表單,將生成表單驗證錯誤
業務邏輯驗證(由Action處理):若是用戶在表單中輸入的姓名爲「Monster」,按照本應用的業務規則,不容許向「Monster」打招呼,所以將生成業務邏輯錯誤。
4 簡述Form Bean的表單驗證流程。
一、當用戶提交了HTML表單,Struts框架自動把表單數據組裝到ActionForm Bean中。
二、接下來Struts框架會調用ActionForm Bean的validate()方法進行表單驗證。
三、若是validate()方法返回的ActionErrors 對象爲null,或者不包含任何ActionMessage對象,就表示沒有錯誤,數據驗證經過。
四、若是ActionErrors中包含ActionMessage對象,就表示發生了驗證錯誤,Struts框架會把ActionErrors對象保存到request範圍內,而後把請求轉發到恰當的視圖組件,視圖組件經過<html:errors>標籤把request範圍內的ActionErrors對象中包含的錯誤消息顯示出來,提示用戶修改錯誤。
5在struts配置文件中action元素包含哪些屬性和子元素?
path屬性:指定請求訪問Action的路徑
type屬性:指定Action的完整類名
name屬性:指定須要傳遞給Action的ActionForm Bean
scope屬性:指定ActionForm Bean的存放範圍
validate屬性:指定是否執行表單驗證
input屬性:指定當表單驗證失敗時的轉發路徑。
<action>元素還包含一個<forward>子元素,它定義了一個請求轉發路徑。
6. 簡單敘述ActionForm Bean的做用
一、ActionForm Bean也是一種JavaBean,除了具備一些JavaBean的常規方法,還包含一些特殊的方法,用於驗證HTML表單數據以及將其屬性從新設置爲默認值。
二、Struts框架利用ActionForm Bean來進行View組件和Controller組件之間表單數據的傳遞。
三、Struts框架把View組件接受到的用戶輸入的表單數據保存在ActionForm Bean中,把它傳遞給Controller組件,Controller組件能夠對ActionForm Bean中的數據進行修改JSP文件使用Struts標籤讀取修改後的ActionForm Bean的信息,從新設置HTML表單。
7 .敘述ActionForm執行步驟
(1)檢查Action的映射,肯定Action中已經配置了對ActionForm的映射
(2)根據name屬性,查找form bean的配置信息
(3)檢查Action的formbean的使用範圍,肯定在此範圍下,是否已經有此form bean的實例。
(4)假如當前範圍下,已經存在了此form bean的實例,而是對當前請求來講,是同一種類型的話,那麼就重用。
(5)不然,就從新構建一個form bean的實例
(6)form bean的reset()方法備調用
(7)調用對應的setter方法,對狀態屬性賦值
(8)若是validatede的屬性被設置爲true,那麼就調用form bean的validate()方法。
(9)若是validate()方法沒有返回任何錯誤,控制器將ActionForm做爲參數,傳給Action實例的execute()方法並執行。
8.在下面的標籤中哪些是struts標籤
A、<html:form>
B、<html:text>
C、<html:errors>
D、<html:message>
9、FormBean的做用
答:FormBean是一種JAVABean,除了具備JAVABean的常規方法,還包含一些特殊方法,用於驗證表單數據,以及將其屬性從新設置爲默認值。 FormBean用來進行View組件和Controller組件之間表單數據的傳遞。View組件接收到用戶輸入的表單數據,保存在FormBean中,把它傳遞給Controller組件,Controller組件能夠對FormBean中的數據進行修改。
10、Forward與Global-Forward的區別
答:Forward是根據Action return的值找到對應的JSP頁。當多個Action共同return同一個值時,可將這個Forward元素寫在Global-Forward中。
11.問題:在Struts應用的視圖中包含哪些組件?
(A) JSP
(B) Servlet
(C) ActionServlet
(D) Action
(E) 表明業務邏輯或業務數據的JavaBean
(F) EJB
(G) 客戶化標籤
12問題:在Struts應用的控制器中包含哪些組件?
(A) JSP
(B) Servlet
(C) ActionServlet
(D) Action
(E)表明業務邏輯或業務數據的JavaBean
(F) EJB
(G) 客戶化標籤
13.在struts配置文件中action元素包含哪些屬性和子元素?
path屬性:指定請求訪問Action的路徑
type屬性:指定Action的完整類名
name屬性:指定須要傳遞給Action的ActionForm Bean
scope屬性:指定ActionForm Bean的存放範圍
validate屬性:指定是否執行表單驗證
input屬性:指定當表單驗證失敗時的轉發路徑。
<action>元素還包含一個<forward>子元素,它定義了一個請求轉發路徑。
14. 問題:在Struts應用的模型中包含哪些組件?
(A) JSP
(B) Servlet
(C) ActionServlet
(D) Action
(E) 表明業務邏輯或業務數據的JavaBean
(F) EJB
(G) 客戶化標籤
15. 問題: struts框架中,關於FormBean,下列說法正確的是:
A FormBean是一種數據bean,主要用來封裝表單提交上來的數據,並把這些數據傳遞給Action
B 在FormBean中能夠對頁面上傳遞來的參數進行一下格式上的驗證,這種驗證是一種客戶端的驗證
C 用戶每次提交表單,都會產生一個新的FormBean實例
D 動態FormBean不能進行驗證操做
16. 問題:struts框架中,在一個Action的配置信息中,name屬性指的是:
A 當前action實例的名字
B 當前action所在的類的名字
C 該Action中調用的FormBean的實例的名字
D 該Action中調用的FormBean的類的所在包名
17. 問題:關於struts項目中的類與MVC模式的對應關係,說法錯誤的是?
A Jsp文件實現視圖View的功能
B ActionServlet這一個類是整個struts項目的控制器
C ActionForm、Action都屬於Model部分
D 一個struts項目只能有一個Servlet
18、問題:如下哪些說法是正確的?
選項:(A)每一個HTTP請求對應一個單獨的ActionServlet實例
(B)對於每一個請求訪問HelloAction的HTTP請求,Struts框架會建立一個單獨的HelloAction實例。
(C)每一個子應用對應一個單獨的RequestProcessor實例
(D)每一個子應用對應一個單獨的web.xml文件
19 ActionForm Bean對象是由誰建立的?
(A) <html:form>標籤處理類
(B) ActionServlet
(C) RequestProcessor
(D) Action
20、struts框架,錯誤的是?
A Struts中沒法完成上傳功能
B Struts框架基於MVC模式
C Struts框架容易引發流程複雜、結構不清晰等問題
D Struts能夠有效地下降項目的類文件數目
21、問題:如下代碼定義了一個變量,如何輸出這個變量的值?
<bean:define id="stringBean" value=「helloWorld「/>
(A)<bean:write name=「stringBean"/>
(B) <bean:write name=「helloWorld"/>
(C)<%= stringBean%>
(D)<% String myBean=(String)pageContext.getAttribute(「stringBean」,PageContext.PAGE_SCOPE);%> <%=myBean%>
22、問題:把靜態文本放在Resource Bundle中,而不是直接在JSP文件中包含這些靜態文本,有什麼優勢?
提升可維護性 提升可重用性 支持國際化
23. 問題:關於struts項目中的類與MVC模式的對應關係,說法錯誤的是?
A Jsp文件實現視圖View的功能
B ActionServlet這一個類是整個struts項目的控制器
C ActionForm、Action都屬於Model部分
D 一個struts項目只能有一個Servlet
24. Struts工做機制?爲何要使用Struts?
工做機制:
Struts的工做流程:
在web應用啓動時就會加載初始化ActionServlet,ActionServlet從
struts-config.xml文件中讀取配置信息,把它們存放到各類配置對象
當ActionServlet接收到一個客戶請求時,將執行以下流程.
-(1)檢索和用戶請求匹配的ActionMapping實例,若是不存在,就返回請求路徑無效信息;
-(2)若是ActionForm實例不存在,就建立一個ActionForm對象,把客戶提交的表單數據保存到ActionForm對象中;
-(3)根據配置信息決定是否須要表單驗證.若是須要驗證,就調用ActionForm的validate()方法;
-(4)若是ActionForm的validate()方法返回null或返回一個不包含ActionMessage的ActuibErrors對象, 就表示表單驗證成功;
-(5)ActionServlet根據ActionMapping所包含的映射信息決定將請求轉發給哪一個Action,若是相應的 Action實例不存在,就先建立這個實例,而後調用Action的execute()方法;
-(6)Action的execute()方法返回一個ActionForward對象,ActionServlet在把客戶請求轉發給 ActionForward對象指向的JSP組件;
-(7)ActionForward對象指向JSP組件生成動態網頁,返回給客戶;
爲何要用:
JSP、Servlet、JavaBean技術的出現給咱們構建強大的企業應用系統提供了可能。但用這些技術構建的系統很是的繁亂,因此在此之上,咱們須要一個規則、一個把這些技術組織起來的規則,這就是框架,Struts便應運而生。
基於Struts開發的應用由3類組件構成:控制器組件、模型組件、視圖組件
25. Struts的validate框架是如何驗證的?
在struts配置文件中配置具體的錯誤提示,再在FormBean中的validate()方法具體調用。
26. 說下Struts的設計模式
MVC模式: web應用程序啓動時就會加載並初始化ActionServler。用戶提交表單時,一個配置好的ActionForm對象被建立,並被填入表單相應的數據,ActionServler根據Struts-config.xml文件配置好的設置決定是否須要表單驗證,若是須要就調用ActionForm的 Validate()驗證後選擇將請求發送到哪一個Action,若是Action不存在,ActionServlet會先建立這個對象,而後調用 Action的execute()方法。Execute()從ActionForm對象中獲取數據,完成業務邏輯,返回一個ActionForward對象,ActionServlet再把客戶請求轉發給ActionForward對象指定的jsp組件,ActionForward對象指定的jsp生成動態的網頁,返回給客戶。
27、STRUTS的應用(如STRUTS架構)
Struts 是採用Java Servlet/JavaServer Pages技術,開發Web應用程序的開放源碼的framework。採用Struts能開發出基於MVC(Model-View-Controller)設計模式的應用構架。 Struts有以下的主要功能:一.包含一個controller servlet,能將用戶的請求發送到相應的Action對象。二.JSP自由tag庫,而且在controller servlet中提供關聯支持,幫助開發員建立交互式表單應用。三.提供了一系列實用對象:XML處理、經過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。