1. 程式人生 > >Struts2基本流程及基礎知識問答

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等等標籤,使用的時候百度查就可以了。