Struts2 Action詳解

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

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

在Struts.xml總换棚,配置實(shí)用Action類動(dòng)作(action)標(biāo)記和類屬性。定義結(jié)果頁(yè)面用結(jié)果的標(biāo)簽和動(dòng)作名稱返回給用戶反镇,可以用它來(lái)訪問(wèn)動(dòng)作類的名稱屬性固蚤。

<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.可選動(dòng)作接口
Struts 2帶有一個(gè)可選的動(dòng)作接口(com.opensymphony.xwork2.Action)。通過(guò)實(shí)現(xiàn)這個(gè)接口歹茶,它帶來(lái)了一些方便和好處夕玩,看下面的源代碼:

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;
}

這個(gè)接口是非常簡(jiǎn)單的,配有5常用常數(shù)值:
** ****success, error, none, input and logic**【颍現(xiàn)在的動(dòng)作類可以直接使用常量燎孟。

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)實(shí)現(xiàn)尸昧。
ActionSupport (com.opensymphony.xwork2.ActionSupport),
一個(gè)非常強(qiáng)大和方便的類揩页,它提供了幾個(gè)重要接口的缺省實(shí)現(xiàn):

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

ActionSupport 類提供一些功能:

  1. 驗(yàn)證 – 聲明一個(gè)validate()方法,并在里面實(shí)現(xiàn)驗(yàn)證代碼彻磁。

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

     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),方便提供功能累提,除非你有理由不這樣做尘喝。這也是一個(gè)很不錯(cuò)的學(xué)習(xí)類,以了解如何做一些重要的Struts2接口的實(shí)現(xiàn)斋陪。
4.動(dòng)作注釋
Struts 2對(duì)注解有很好的支持朽褪,你可以擺脫XML文件,并使用@action在動(dòng)作類上替換无虚。

    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)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缔赠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子友题,更是在濱河造成了極大的恐慌嗤堰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件度宦,死亡現(xiàn)場(chǎng)離奇詭異踢匣,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)戈抄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)离唬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人划鸽,你說(shuō)我怎么就攤上這事输莺。” “怎么了裸诽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵嫂用,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我崭捍,道長(zhǎng)尸折,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任殷蛇,我火速辦了婚禮实夹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘粒梦。我一直安慰自己亮航,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布匀们。 她就那樣靜靜地躺著缴淋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上重抖,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天露氮,我揣著相機(jī)與錄音,去河邊找鬼钟沛。 笑死畔规,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恨统。 我是一名探鬼主播叁扫,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼畜埋!你這毒婦竟也來(lái)了莫绣?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤悠鞍,失蹤者是張志新(化名)和其女友劉穎对室,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體狞玛,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡软驰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年涧窒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了心肪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡纠吴,死狀恐怖硬鞍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戴已,我是刑警寧澤固该,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站糖儡,受9級(jí)特大地震影響伐坏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜握联,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一桦沉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧金闽,春花似錦纯露、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春钞速,著一層夾襖步出監(jiān)牢的瞬間贷掖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工渴语, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羽资,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓遵班,卻偏偏與公主長(zhǎng)得像屠升,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狭郑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法腹暖,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法翰萨,繼承相關(guān)的語(yǔ)法脏答,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,581評(píng)論 18 399
  • 概述 Struts就是基于mvc模式的框架亩鬼!(struts其實(shí)也是servlet封裝殖告,提高開(kāi)發(fā)效率!) Strut...
    奮斗的老王閱讀 2,923評(píng)論 0 51
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,790評(píng)論 0 11
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產(chǎn)品雳锋,是在 struts1和WebWork的...
    inke閱讀 2,242評(píng)論 0 50
  • 三界眾生黄绩,天界有帝,以無(wú)上道法掌管世間秩序玷过,地界有君爽丹,斷陰陽(yáng)掌生死判輪回,人界有皇辛蚊,管理人類維持三界平衡粤蝎!但世間紛...
    靜德公子閱讀 333評(píng)論 0 1