美文网首页
Struts2 Action详解

Struts2 Action详解

作者: 薛云龙 | 来源:发表于2016-03-05 14:17 被阅读152次

    在Struts2中,大部分的业务都是由动作来完成的,。动作类包括业务逻辑,获取资源包,保存数据,验证,并选择应该发送给用户的视图的结果页面,动作是Struts2的核心。
    1.动作-Action
    Struts 2动作不强迫你实现任何接口或扩展类,它只是需要你实现一个 execute()方法返回一个字符串来表示其应该返回的结果页面。

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

    在Struts.xml总,配置实用Action类动作(action)标记和类属性。定义结果页面用结果的标签和动作名称返回给用户,可以用它来访问动作类的名称属性。

    <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)。通过实现这个接口,它带来了一些方便和好处,看下面的源代码:

    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常用常数值:
    ** ****success, error, none, input and logic**。现在的动作类可以直接使用常量。

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

    3.ActionSupport
    Support类,通常的做法是提供接口的默认实现。
    ActionSupport (com.opensymphony.xwork2.ActionSupport),
    一个非常强大和方便的类,它提供了几个重要接口的缺省实现:

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

    ActionSupport 类提供一些功能:

    1. 验证 – 声明一个validate()方法,并在里面实现验证代码。

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

    在大多数情况下,应该扩展此类妥当,方便提供功能,除非你有理由不这样做。这也是一个很不错的学习类,以了解如何做一些重要的Struts2接口的实现。
    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;
        }
    }

    相关文章

      网友评论

          本文标题:Struts2 Action详解

          本文链接:https://www.haomeiwen.com/subject/shzokttx.html