Struts2學習總結_Action

1.Struts2的配置文件

 

 

節點package:與java類中的package關鍵字作用類似,用來與其他的action相互區分。

name:即可以有2個完全相同的action,只要他們的package的name不一樣。(必須指定)

extends:當前包所要繼承的父包,繼承之後,當前包擁有父包中所定義的任意類、攔截器等.(非必須,一般指定爲"struts-default").

namespace:配置訪問action的根路徑 (默認爲"",可以匹配任何根路徑訪問)

result:如果不包含name屬性,則會自動默認設置name="success";否則 name等於execute()方法的返回值.

 

1.可以有2個package-namespace和action-name 完全相同的actionA和B。訪問的時候,如果A寫在B的前面,則實際訪問的是ActionB. 

2.如果package-name,package-namespace,action-name完全相同的話,struts將不知道該裝載哪一個action 報404錯誤。

 

注意:

1.struts2.1.8.1之前,如果安tomcat裝路徑中包含空格,在配置了struts.devMode爲true時,將會報錯嚴重: Exception starting filter struts2 java.lang.NullPointerException
2.struts2.2之後,需要引入javassist-3.11.0.GA.jar包

 

運行struts2所需jar包:

struts2-core-2.2.3.jar,xwork-core-2.2.3.jar,ognl-3.0.1.jar,javassist-3.11.0.GA.jar,freemarker-2.3.16.jar,commons-io-2.0.1.jar,commons-logging-1.1.1.jar,commons-fileupload-1.2.2.jar,commons-lang-2.5.jar

 

在eclips中配置jar包所對應的源碼,使得可以直接在eclipse中查看jar包的源碼

1.右鍵jar包->properties->選擇對應的源碼的路徑即可,如下圖

 

 

在eclipse中配置dtd文件的自動提示

1.進入Window->Preferences 如下圖

 

選擇"ADD"添加DTD文件。如下圖

 

location選擇本地存儲的dtd文件

key填寫xml中的dtd文件的uri地址

 

 

Struts2中的Action可以沒有對應的類,只指定一個name,Struts2會自己裝載一個類。

Struts2中的Action指定自定義的類可以有3種形態

1.普通類

 

2.實現Action接口

 

3.繼承ActionSupport父類

 

一般採用第三種寫法,因爲ActionSupport類提供了很多便利的方法可以供我們使用。

 

Action的方法調用

Action默認是調用execute方法,也可以明確指定action調用哪一個方法,具體有三種形式

1.通過配置action的屬性method來指定

 

上面將會調用action的add方法

但如果action中有很多方法的話,每個方法都需要配置一個action,這是非常麻煩的,所以一般不採用這種形式

 

2.通過DMI動態方法調用

action的配置不用改變,在前臺頁面調用時,寫成<a href="<%=context %>/user/userAdd!add">,也將會調用add方法。

 

3.通過通配符調用

{1}指代第1個*的內容,{2}指代第2個*的內容

 即只要action的名字,方法和相應的jsp名字都按照一定的約定設置,只需配置這一個action,就能處理很多類似的action請求

請求:/actions/Teacher_add

對應的Action類:com.bjsxt.struts2.action.TeacherAction

對應的Action方法:add

對應的頁面:Teacher_add_success.jsp

 

 

Action的頁面參數獲取

Struts2的頁面參數獲取相對struts簡單的多了。不再需要另外定義form了。有以下幾種形式:

1.通過成員變量

只需在action中定義與頁面屬性一樣的變量名,並寫上對應的set/get方法,即可接收到頁面對應屬性傳遞過來的值

 

2.通過DomainModel

1)定義一個javaBean,裏面包含各個頁面屬性的set/get方法

2)在action裏定義該javaBean的成員變量,並寫上對應的set/get方法,即可直接通過類似user.getName()的方式,獲取頁面的值.注意這裏的javaBean成員變量只需聲明,不要new。

 

3.通過ModelDriven

1)定義一個javaBean,裏面包含各個頁面屬性的set/get方法

2)action實現ModelDriven接口,定義該javaBean的成員變量,必須new出來。然後寫上getModel方法

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章