Struts2 動態方法呼叫

2021-07-30 04:18:17 字數 1715 閱讀 6439

via:

當我們訪問乙個action時,預設是訪問execute()方法,但當在乙個action中存存多個方法時,這時我們應該怎麼定位到想要訪問的方法呢?這時就需要用到動態方法呼叫dmi(dynamic method invocation)。這裡簡單介紹兩種動態呼叫的方法:

一、method屬性

在struts.xml檔案中,我們可以指定method屬性,來定位我們要訪問的方法,如下**:

下面通過乙個登入註冊的demo來演示一下具體的操作過程:

一)、loginregisteraction 原始檔部分**如下:

private string username;  

private string password;  

//預設執行登入功能  

public string execute() else  

}  public string register()  

二)、struts.xml 檔案部分配置如下:

/dmi/login.jsp

/dmi/error.jsp

/dmi/welcome.jsp

/dmi/login.jsp

/dmi/error.jsp

/dmi/welcome.jsp

三)、loginregister.jsp檔案**如下:

動態方法呼叫之method屬性

在乙個form表單中,有登入、註冊兩個動作,分別對應action中的不同方法,登入 預設對應execute()方法,註冊對應register()方法,這樣,通過method屬性實現動態方法呼叫的操作就完了,但是struts.xml檔案中的配置存存冗餘問題,這時我們可以通過萬用字元來解決這個問題。

二、萬用字元

一)、為了更好的說明問題,我們在loginregisteraction 原始檔中增加以下兩個方法,方法實現功能與上面的完成一樣,主要用於體現 登入 不在呼叫預設的 execute() 方法,而是對應於action中的 dmilogin() 方法,註冊 對應action中的 dmiregister() 方法:

public string dmiregister()  

public string dmilogin() else  

}二)、struts.xml 檔案部分配置如下:

/dmi/login.jsp

/dmi/error.jsp

/dmi/welcome.jsp

上面的不是乙個普通的action,而是乙個定義了一系列的邏輯action,只要使用者請求的url是*action模式的,都可能用該action來處理;method屬性值不再是action中的哪乙個方法,而是乙個表示式,該表示式的值是name屬性中的第乙個*的值。例如使用者請求的url是:dmiloginaction.action,則呼叫loginregisteraction中的dmilogin方法。

三)、loginregister.jsp檔案增加如下**:

$("#register").click(function());

動態方法呼叫之萬用字元

在訪問時 動態方法呼叫 url為: http://localhost:8080/projectname/package/actionname!methodname.do

注意: 要使用動態方法呼叫,必須社會自允許struts2允許動態方法呼叫,通過設定struts.enable.dynamicmethodinvocation常量來完成,該常量屬性的預設值是true

Struts2動態方法呼叫

第一種 index.jsp中 struts.xml中 registaction中 通過表單中form裡action 號前面的rgistaction 去配置檔案裡找到action name registaction 然後找到對應的class new乙個例項出來最後呼叫!號後面的login方法。第二種 ...

Struts2動態方法呼叫

動態方法呼叫 在struts2中動態方法呼叫有三種方式,動態方法呼叫就是為了解決乙個action對應多個請求的處理,以免action太多 第一種方式 指定method屬性 這種方式我們前面已經用到過,類似下面的配置就可以實現 redirect web inf jsppage chapter2 pla...

Struts2動態方法呼叫

動態方法呼叫 在struts2中動態方法呼叫有三種方式,動態方法呼叫就是為了解決乙個action對應多個請求的處理,以免action太多 第一種方式 指定method屬性 這種方式我們前面已經用到過,類似下面的配置就可以實現 redirect web inf jsppage chapter2 pla...