Www.helper3.com
热门关键字: php net javascript java
Struts2基础 专题
专题目录
您的位置:java > Struts2基础专题 > 使用Struts2动作
使用Struts2动作
作者:--    发布时间:2019-11-20 10:14:26
在struts2中,会花大部分的时间用在用动作来处理工作。动作类包含业务逻辑,获取资源包,保存数据,验证,并选择应发回给用户的视图的结果页面。这是struts2的核心,所以必须要了解动作的基本概念。

1. 动作 - action

struts 2动作不强迫你实现任何接口或扩展类,它只是需要你实现一个 execute()方法返回一个字符串来表示其应该返回的结果页面。

package com.h3.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.h3.user.action.loginaction">
    <result name="success">pages/welcome.jsp</result>
  </action>
<package>
现在,可以通过 .action 扩展名后缀访问动作。
http://localhost:8080/struts2example/user/validateuser.action 
默认.action是可配置的,只需要设置“struts.action.extension”的值,以满足您的需要。

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.h3.user.action;
import com.opensymphony.xwork2.action;
public class loginaction{
    //business logic
    public string execute() {
        return success;
    }
}
不明白为什么很多struts开发人员喜欢实现此动作接口,它更好地扩展了actionsupport。

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

总结

扩展actionsupport类,它适合在大多数情况下。

滚动到顶部 滚动到底部
网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
QQ群:570078429
网站备案号:
粤ICP备17073857号