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