程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Unmi的Struts2學習筆記(二)

Unmi的Struts2學習筆記(二)

編輯:關於JAVA

記筆記,尤其是在 Blog 裡記,實則是浪費時間。讓學習、閱讀的速度以數量 級的下降,收獲時當時掌握的更細,卻並不代表著真記得牢。一小段時間不用它 ,同樣可以忘得很干淨,也就是方便於以後能由此泛起些漣漪,如能拋磚引玉就 更幸運了。入正題:

1. 記得 Struts1 的 struts-config.xml 通常是放在 WEB-INF 目錄下的, Struts2 的 struts.xml 卻要放到 WEB-INF/classes 下的,傻眼了吧,反正我是 。沒看仔細之前,總給我報 There is no Action mapped for namespace / and action name Login. - [unknown location] 錯誤。因未在 web.xml 指定 struts.xml,所以用 ClassLoader 來加載它了。

2. 最簡單的 Struts2 應用都要用到 freemarker-xxx.jar 包,因為 UI 標簽 要用到 FreeMarker ftl 的模板。

3. FilterDispatcher 要處理所有的 Web 請求,所以它的 url-pattern 是 /*,並自動對 *.action 轉給業務 Action 處理。

4. struts.xml 中引入一個 <package>節點來包裹 <action>, 必須指定 <package> 的 name 屬性,自定義命名即可,與 class 所在包 無多大關系。

5. 把 ActionContext.getContext().getSession() 這個 Map 當 HttpSession 用即可,它與 HttSession 之間的轉換 Struts2 的攔截器幫你完成 。

6. 在 Action 接受客戶端請求的數據,並且還可存放送給客戶端的數據,這 種做法個人覺得不怎麼清爽,數據與控制器雜揉一塊,也許是受 Struts1 的 ActionForm 的影響。Action 中的屬性值會存放在類型為 ValueStack、名為 struts.valueStack 的屬性中。

7. Struts2 的標簽更是與 Struts1 的千差萬別,只有 <s:xxx 的標簽了 ,所以只需在 jsp 前加< %@taglib prefix="s" uri="/struts-tags" %> ,哪用 Struts1 那麼分門別5類,但功能更強,這個嗎,誰用誰知道。

8. 國際化支持要先在 struts.properties 中指定資源束名,如 struts.custom.i18n.resources=messageResource,則在 classpath 下找 messageResource_語言代碼_國家代碼.properties。用 <s:text name="key"> 或 <s:property value='%{getText("key")}'/> 輸出國 際化消息。

9. Struts2 支持在 JSP 頁面中臨時加載資源文件,也支持通過全局屬來加載 資源文件,上一條就是全局的方式。

10. Action 中增加數據校驗功能,可能它繼承 ActionSupport 類,並實現 validate() 方法,產生的錯誤放到 ActionSupport 類的 fieldErrors 域中,由 OGNL 負責輸出。有錯誤請求將轉發到 input 邏輯視圖。Struts2 的 <s:form .../> 默認已提供了輸出校驗錯誤的能力。是否覺得這種校驗忒不盡人情了, 別急,Struts2 可讓你完全用配置來校驗表單的,讓你的 Action 還是那個 Action (繼承 ActionSupport,無須實現 validate() 方法),只需寫一個 ActionName-validattion.xml 文件扔在與 Action 同位置的目錄中即可,這實質 就是用的基於 XWork 的驗證框架。

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