Struts_1

一、Struts的開發步驟:(手動)

1、  創建web工程,創建web.xml配置文件進行配置

2、  創建action實現類,推薦使用繼承ActionSupport類的方法,該類中的execute是默認的實現方法,也可以自定義其他方法,在訪問時進行動態調用。

3、  在struts.xml配置文件中對action進行配置,主要的配置項如下:

在該配置文件中的屬性基本是以鍵值對的形式存在的

(1)      package

name屬性:其他包引用該包時的key

namespace屬性:會影響對該包下的action的方法路徑,通常設爲”/”

               extends屬性:即該包繼承的包名,一般繼承”struts-default”

(2)      action

該配置要放在package中,是要訪問的action的信息配置

Name屬性:這是action的名字,可以隨便起,但是要在url中要通過該名字進行訪問,所以以簡單爲主。

Class屬性:這是實現action實現類的存放路徑,一般爲工程中的包名.類名。

Method屬性:這是設置訪問action時要調用其實現類中的方法,默認都調用execute方法。

(3)      result

該配置放在action中,表示的是action實現類的return路徑。

Name屬性:這是action實現類中return返回頁面的key,返回頁面的值在result標籤內部,即jsp頁面的路徑。

4、  創建視圖頁面,一般爲jsp頁面。

注意:在jsp頁面中定義表單要提交到某個action時,表單屬性的設置:

(1)      action屬性:這是表單要訪問的action名字,當要訪問的action調用其實現類中的默認方法時,action的值爲“action名.action”,其中action名就是在struts配置文件中action中name屬性的值;如果要訪問的action調用的不是其實現類中的默認方法,則需要根據動態調用方法的通配符設置添加適當的方法名稱。

(2)      method屬性:這個默認爲post,因爲如果是get的話,會將提交的內容,如用戶名和密碼顯示在瀏覽器的url中。

5、  訪問相應的action或jsp頁面進行測試。

二、接受用戶輸入的三種方式

1、  通過action屬性接受:如同獲取提交用戶名和密碼並在客戶端輸出

(1)      創建提交數據頁面(如登陸界面login.jsp)

(2)      創建action的實現類繼承ActionSpport父類

(3)      在該實現類中創建提交數據對應的屬性即相應的get和set方法,同時創建訪問action時的接受方法,在該方法中通過this.getUsenamer()獲取。

2、  通過領域對象接受

(1)      將接受的屬性用一個類封裝起來。提供所有屬性的get,set方法以及無參構造函數。

(2)      創建action實現類繼承ActionSpport父類,該類中添加被封裝的對象,並提供該對象的set和get方法。

(3)      在提交的表單元素中使用對象名.屬性名設置name的值。

(4)      在訪問的action方法中獲取該對象,就可以獲取到該對象的屬性值,即用戶提交的數據。

注意:在這種方法中可以使用hibernate事項將接受到的數據添加到數據庫中。

方法:將前面封裝的對象通過hibernate的配置文件映射到數據庫中,在action的實現類中創建一個添加接受到信息的方法,該方法的目的是通過hibernate向數據庫中添加獲取的數據,然後在訪問action時調用的方法中調用該方法,通過傳參數的方法實現添加數據。

3、  通過模型驅動接受

(1)      同樣將接受的屬性用一個類封裝起來。提供get和set方法以及無參構造函數。

(2)      創建action類,實現ModelDriven接口(泛型),並重寫裏面的getModel()方法。

(3)      在該類中實例化剛纔封裝的對象,在重寫的方法getModel()中返回該對象。

(4)      其他的操作跟通過領域接受的操作一樣,只是在提交的頁面表單元素使用屬性設置name的值

三、struts訪問servlet API的方法:

1、  通過第一種解耦的方式:

(1)      獲取上下文對象ActionContext

(2)      通過上下文對象ActionContext對象獲取httpservletrequest、httpsession、servletcontext(httpapplication)對象的封裝集合map

(3)      用三種對象的get方法就可以獲得相應的請求。

2、  通過第二種解耦的方式:

(1)      實現ApplicationAware、RequestAware、SessionAware接口,並重寫未實現的set方法。

(2)      可直接獲取封裝對象的Map集合

(3)      在重寫的方法中調用相應的Map集合。

3、  通過第一種耦合的方式:

(1)使用ServletActionContext類的靜態方法getRequest()方法獲取httpservletrequest對象

(2)使用獲取的request對象獲取httpsession對象

(3)使用ServletActionContext類的靜態方法getServletContext()方法獲取servletcontext對象,即application對象。

然後它們的使用方法就和servlet中的三種對象的使用方法是完全一樣的,即實現了耦合。

還有第二種和第三種耦合方式,因爲一般情況下推薦使用解耦的方式,所以就不多介紹另外兩種耦合方式,一旦使用到耦合方式,則第一種已經足夠了。

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