2012-09-13 157 views
0

我是struts中的新成員並學習它。我的問題是struts如何將請求參數映射到動作實例變量。例如,我有一個登錄表單需要用戶名和密碼。現在它向LoginAction發送請求。這個動作類將如何獲得用戶名實例變量中的用戶名和密碼變量中的密碼。在servlet中,我們使用request.getParameter()方法併爲特定變量賦值。Struts 2請求映射

回答

1

在我們使用Interceptor Struts2的,在這種情況下的struts2會使用param攔截器爲你設置params,你只需要配置你的攔截器堆棧(或者你只是使用默認堆棧)。這裏是鏈接到Interceptor,如果你在struts2中很新鮮,只需使用默認配置並感覺一下。

例如:

<s:form action="my-action"> 
    <s:textfield name="myField"/> 
    <s:submit/> 
</s:form> 

動作類:

public class MyActionClass extends ActionSupport{ 
    private String myField; // getter and setter 
    public String execute() throws Exception{ 
    return "success"; 
    } 
} 

配置:

<package name="default" extends="struts-default"> 
    <action name="my-action" class="MyActionClass"> 
    <result>success.jsp</result> 
    </action> 
</package> 
在這種情況下

myField將被自動設置通過攔截器。

0

Struts爲您繪製參數。這就是爲什麼使用框架爲您節省時間和精力的原因之一,因爲您無需從request中手動提取參數。

Struts通過調用setUsername自動將請求參數username映射到動作類的username成員。

又見struts tutorial

1

那麼Struts2的使用一組Interceptors它爲你做繁重,這意味着在你的行動的方法執行的時間,你會得到所有需要的數據進行工作。

用於將數據從JSP傳輸到動作類Struts2使用攔截器名稱parameters-interceptor,您只需在動作類中創建與JSP字段名稱相同的屬性即可,S2將轉換數據並填充田地給你。

所以如果你JSP有拖場與名說userNamepassword所有你需要定義thse與getter和setter Action類像

public class MyAction extends ActionSupport{ 
    private String userName; 
    private String password 
    //getter ans setter 

public String execute() throws Exception{ 
    // do what yoou want 
} 


}