Struts2 Action詳解

在Struts2中,大部分的業(yè)務(wù)都是由動作來完成的,。動作類包括業(yè)務(wù)邏輯,獲取資源包,保存數(shù)據(jù),驗證,并選擇應(yīng)該發(fā)送給用戶的視圖的結(jié)果頁面,動作是Struts2的核心。
1.動作-Action
Struts 2動作不強(qiáng)迫你實現(xiàn)任何接口或擴(kuò)展類,它只是需要你實現(xiàn)一個 execute()方法返回一個字符串來表示其應(yīng)該返回的結(jié)果頁面。

package com.xyl.user.action; 
public class LoginAction{
    //business logic
    public String execute() {
    return "success";
    }
}

在Struts.xml總,配置實用Action類動作(action)標(biāo)記和類屬性。定義結(jié)果頁面用結(jié)果的標(biāo)簽和動作名稱返回給用戶,可以用它來訪問動作類的名稱屬性。

<package name="user" namespace="/User" extends="struts-default">
  <action name="validateUser" class="com.yiibai.user.action.LoginAction">
<result name="success">pages/welcome.jsp</result>
  </action>
<package>

2.可選動作接口
Struts 2帶有一個可選的動作接口(com.opensymphony.xwork2.Action)。通過實現(xiàn)這個接口,它帶來了一些方便和好處,看下面的源代碼:

package com.opensymphony.xwork2;
public interface Action {
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
public String execute() throws Exception;
}

這個接口是非常簡單的,配有5常用常數(shù)值:
** ****success, error, none, input and logic**。現(xiàn)在的動作類可以直接使用常量。

package com.xyl.user.action;
import com.opensymphony.xwork2.Action;
public class LoginAction{ 
//business     logic
 public String execute() {
return SUCCESS; 
}
}

3.ActionSupport
Support類,通常的做法是提供接口的默認(rèn)實現(xiàn)。
ActionSupport (com.opensymphony.xwork2.ActionSupport),
一個非常強(qiáng)大和方便的類,它提供了幾個重要接口的缺省實現(xiàn):

public class ActionSupport implements Action, Validateable, 
   ValidationAware, TextProvider, LocaleProvider, Serializable {
 ...
}

ActionSupport 類提供一些功能:

  1. 驗證 – 聲明一個validate()方法,并在里面實現(xiàn)驗證代碼。

  2. 文字本地化 – 使用gettext()方法來獲得資源包的消息。

     package com.xyl.user.action;
     import com.opensymphony.xwork2.ActionSupport;
     public class LoginAction extends ActionSupport{
     private String username;
     private String password;
     public String getPassword() {
         return password;
     }
     public void setPassword(String password) {
     this.password = password;
     }
     public String getUsername() {
     return username;
     }
     public void setUsername(String username) {
     this.username = username;
     }
     //business logic
     public String execute() {
     return "SUCCESS";
     }
     //simple validation
     public void validate(){
     if("".equals(getUsername())){
         addFieldError("username", getText("username.required"));
       }
     if("".equals(getPassword())){
         addFieldError("password", getText("password.required"));
     }
     }
     }
    

在大多數(shù)情況下,應(yīng)該擴(kuò)展此類妥當(dāng),方便提供功能,除非你有理由不這樣做。這也是一個很不錯的學(xué)習(xí)類,以了解如何做一些重要的Struts2接口的實現(xiàn)。
4.動作注釋
Struts 2對注解有很好的支持,你可以擺脫XML文件,并使用@action在動作類上替換。

    package com.xyl.user.action;
    import org.apache.struts2.convention.annotation.Action;
    import org.apache.struts2.convention.annotation.Namespace;
    import org.apache.struts2.convention.annotation.Result;
    import org.apache.struts2.convention.annotation.ResultPath;
    import com.opensymphony.xwork2.ActionSupport;
    @Namespace("/User")
    @ResultPath(value="/")
    public class ValidateUserAction extends ActionSupport{
        @Action(value="Welcome", results={
        @Result(name="success",location="pages/welcome_user.jsp")
        })
    public String execute() {
         return SUCCESS;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 概述 Struts就是基于mvc模式的框架!(struts其實也是servlet封裝,提高開發(fā)效率!) Strut...
    奮斗的老王閱讀 2,986評論 0 51
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,835評論 0 11
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產(chǎn)品,是在 struts1和WebWork的...
    inke閱讀 2,276評論 0 50
  • 三界眾生,天界有帝,以無上道法掌管世間秩序,地界有君,斷陰陽掌生死判輪回,人界有皇,管理人類維持三界平衡!但世間紛...
    靜德公子閱讀 368評論 0 1