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