代码改变世界

创建Action的三种方式

2019-08-26 08:26  菜码地里的小白  阅读(664)  评论(0编辑  收藏  举报

1、创建一个Action类

一个简单的java类,

没有实现任何接口,也没有继承任何类。

优点:无耦合

适用于逻辑相对简单的action

import com.opensymphony.xwork2.Action;


public class DefaultAction{
 
    public String execute() throws Exception {
        System.out.println("这是一个action类");
        return null;
    }
  
}

  

2、实现Action接口

 

com.opensymphony.xwork2.Action

 
import com.opensymphony.xwork2.Action;


public class ImplAction implements Action{
 
    @Override
    public String execute() throws Exception {
        System.out.println("这是继承Action的action类");
        return SUCCESS;
    }
     
}

  接口中有五个常量属性以及一个方法:

属性:

success:跳转到成功后的视图页面

none:代表返回null,不做任何操作(跳转操作也不会做)

error:跳转到出现错误的视图页面

input:这是struts2框架中interceptor中发现问题后会访问的一个视图

login:一个登录视图,可用于权限操作

方法:

execute:将要执行的方法,需要重写此方法,

3、

继承ActionSupport类

 

com.opensymphony.xwork2.ActionSupport

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
 

public class LoginAction extends ActionSupport implements ModelDriven<User> {
    /**
     *ModelDriven创建一个User实例
     */
    private User user=new User();
    //实现序列化接口
    private static final long serialVersionUID = 1L;
 
    /**
     * 登录验证
     * @return
     */
    public String LoginUI() {
        System.out.println(user.getPassword());
        if (user.getUserName()==null||"".equals(user.getUserName())) {
            this.addFieldError("userName12","用户名出错");
            return "LoginUI";
        }
        return "LoginUI";
    }
     
    /* (non-Javadoc)
     * @see com.opensymphony.xwork2.ModelDriven#getModel()
     * 该方法对于返回model
     */
    @Override
    public User getModel() {
        // TODO Auto-generated method stub
        return user;
    }
}

  

此类也实现了Action接口

因为它具有丰富的功能,如表单校验 错误信息 设置国际化等,所以常在开发中使用,但也同样有高耦合的问题

 

内容参考:https://www.cnblogs.com/lonecloud/p/5702101.html && https://blog.csdn.net/wangrenpan/article/details/70148122