Struts2基本流程及基礎知識問答
這是我在struts2學習過程中的一些思考和查閱所得答案: 我能看懂的是什麼?
- 1、為什麼要用介面和實現類。
增加專案的可擴充套件性,方便後期升級和維護。
- 2、專案的整體流程。
HTML頁面(JQuery Ajax 提交action請求)——》控制類action類——》呼叫service處理業務邏輯——》呼叫Dao層存取資料
我不能看懂的是什麼?
- 1、使用struts需要什麼配置?
web.xml(Tomcat webapp ROOT下複製):配置struts2的核心控制器FilterDispatcher;為FilterDispatcher建立對映。
struts.xml:
- 2、Action類是什麼角色,怎麼獲取瀏覽器提交的資料?
Action起控制器的角色,接收請求並分流請求,然後傳遞給service層處理業務邏輯。 獲取資料的方法: action類中定義了和表單(或提交資料)中完全同名的屬性以及其getter和setter方法,這樣,Struts2框架就會自動把提交的資料賦給相應的屬性,都不用專門去接收了!(如果是servlet的話還要專門去接收)
- 3、如何在Action中往request、response或session中新增獲取屬性(換句話說就是怎麼拿到request、response等物件)?
方式一:com.opensymphony.xwork2.ActionContext (implements java.io.Serializable) ActionContext.getContext().getSession() 該方法返回Session的map,可以往裡面新增屬性,然後再頁面獲取。但是ActionContext不能獲取HttpServletRequest和HttpServletResponse。 方式二: org.apache.struts2.ServletActionContext class ServletActionContext :Web-specific information for actions(專為web開發設計的類) ServletActionContext是ActionContext的子類
這樣就可以獲取request和response了。完美!
- 4、Action只是一個普通的java類嗎?
一般action都會繼承struts2提供的ActionSupport類,該類提供了一些比較規範的常量,如SUCCESS等,並且提供了validate方法進行表單驗證。
- 5、struts.xml中包必須要繼承struts-default包嗎?
一般來說,使用者在自己編寫struts.xml是,都要使用extends繼承struts-default.xml檔案中定義的struts-default包,因為該包定義了一些struts2框架要使用到的資源,比如Bean、result型別、攔截器等。
- 6、怎麼使用action類?
編寫好action類後,只有在struts.xml檔案中配置該action才能使用它處理請求。
- 7、Action類是控制器,那它的業務邏輯寫在哪裡?
首先,action類會繼承struts2的ActionSupport類,然後就可以將業務邏輯重寫進該類的execute方法,雅思高分範文struts2框架會預設執行該方法裡面的邏輯。
- 8、如果我只想請求User類中的regist方法該怎麼辦?execute方法不是隻有一個嗎?
這就要用到Action類方法的動態呼叫了:jsp頁面中的form(或Ajax請求中的請求連結)通過“action=ActionName!MethodName.action”將請求提交給Action的特定方法去處理。
- 9、JSP+Servlet模式中檢視層可以通過req獲取需要裝填的資訊,那麼作為一個更優秀的框架,struts2的檢視層怎麼獲取Action的資訊?
ONGL(Object Navigation Language)物件導航語言,是一種即簡單又強大的表示式語言。它是struts2框架檢視預設的表示式語言。通過使用OGNL,Struts2檢視可以直接獲取模型層的資料。 ONGL通常用“物件.屬性”的形式來呼叫,如Person.name就表示person的那麼屬性。 如果要獲取request、session等裡面的資訊的話,則例項如下,具體例項在使用時再去查就好了。
- 10、如果我要在檢視中顯示一個集合,應該怎麼做呢?
這就要用到struts2標籤庫了。使用struts2中的iterator標籤就可以解決該問題,例項如下
Struts2還有諸如if/else、append等等標籤,使用的時候百度查就可以了。