程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> struts2常見面試題

struts2常見面試題

編輯:C++入門知識

搭建struts2的步驟:

1、 創建一個webproject工程

2、 導入jar包

\\\

3、 在web.xml文件中編寫核心過濾器

\

\\

4、 寫一個action(當struts中寫了映射地址時才用寫)

\\

\

5、將struts.xml文件放入類路徑(WEB-INF\classes)下:(可以從struts2發型包\apps\struts-blank.war中拷貝)








6、把應用部署到Tomcat中,啟動Tomcat,如果沒有報錯,說明搭建成功

Struts2的工作原理

在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組件生成動態網頁,返回給客戶;

為什麼要用struts2?


當我們不用框架而僅僅依靠servlet處理問題時,servlet暴露給我們了很多問題

1、 在web.xml文件中需要配置很多行代碼,維護起來很不方便,不利於團隊合作

2、一個servlet的入口只有一個doPost或者doGet方法,如果在servlet中寫很多個方法,代碼結構會顯得非常混亂。

3、servlet類與servlet容器高度耦合,每個方法中都有兩個參數request,response。如果服務器不啟動,這兩個參數沒有辦法初始化。

4、如果在servlet的一個方法中有很多功能,會導致該方法相當復雜,不利於維護。

5、如果在一個servlet類中有很多方法,在浏覽器中輸入訪問的url寫起來也會相當麻煩

6、在servlet中如果獲取頁面上表單中的數據,那麼在方法中會寫很多行。

而struts恰恰幫我們解決了這系列的問題,基於Struts開發的應用由3類組件構成:控制器組件(ActionServlet/RequestProcessor/Action/ActionMapping/ActionForward)、模型組件、視圖組件。

1、利用struts提供的taglib可以節約開發時間;2、維護擴展方便,通過一個配置文件即可把握整個系統各部分之間的聯系,這對於後期的維護有著莫大的好處。c、表現與邏輯分離

d、表單驗證解決了請求數據的驗證問題,增強了系統健壯性。

e、便於團隊開發


struts的缺點:大量使用標簽,對於初學者難度大,ActionForms使用無法進行單元測試


struts提供了幾個標簽庫?


Struts提供了5個標簽庫,即HTML、Bean、Logic、Template和Logic

HTML 標簽 用來創建能夠和Struts 框架和其他相應的HTML 標簽交互的HTML 輸入表單

Bean 標簽 在訪問JavaBeans 及其屬性,以及定義一個新的bean時使用

Logic 標簽 管理條件產生的輸出和對象集產生的循環

Template 標簽 隨著Tiles框架包的出現,此標記已開始減少使用

Titles框架為創建web頁面提供了一種模板機制,能將頁面的內容和布局分離。

Nested標簽 增強對其他的Struts 標簽的嵌套使用的能力

strust的Action是不是線程安全的?如果不是有什麼方式可以保證Action的線程安全?

不是線程安全的,只要不聲明類變量,因為只存在一個Action類實例,所有線程會共享類變量。


Struts的主要功能包括??

一包含一個controller servlet,能將用戶的請求發送到相應的Action對象。二JSP自由tag庫,並且在controller servlet中提供關聯支持,幫助開發員創建交互式表單應用。三提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。

Validator的組成與作用?

1) 實現各種驗證規則的Java類

2) 配置文件

3) 資源文件

4) JSP自定義標簽

Validator組件可以很好地解決用戶輸入數據的驗證問題,但它並不是一個獨立運行的組件,它可以被

嵌入到目前大部分的Web應用開發框架中。Validator組件的驗證方式有多種,既可以通過JavaScript腳本實現用戶輸入數據的頁面驗證,也可以實現在後台處理程序中的Java驗證

ActionForm的作用?

ActionForm屬於一種數據傳輸對象,聯系了前台頁面與後台的Action方法,實現了前後台的數據轉換和傳遞。它的作用有:

1、 在顯示頁面的時候用於完成頁面中各種控件的初始化工作。

2、 在用戶提交請求的時候,ActionForm又代表了用戶所提交的數據,供Action以及後續的業務處理方法使用

3、 可以對用戶提交數據的合法性進行驗證



待續……


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved