Struts2中Action的编写方式

本文记录Java学习过程中遇到的Struts2中Action的编写方式~

Action是一个POJO类

在Struts2中,Action可以不继承特殊的类或不实现任何接口,仅仅是个POJO。POJO全称为Plain Ordinary Java Object(简单的Java对象),只要具有一部分getter/setter方法的那种类,就可以称为POJO。一般在这个POJO类中,要有一个公共的无参构造方法和一个execute()方法。

示例代码:

public class ActionDemo {

	public String execute() {
		System.out.println("ActionDemo");
		reture null;
	}
}

execute方法的要求如下:

  • 方法的权限修饰符为public;
  • 返回一个字符串,就是下一个页面的result;
  • 方法没有参数。

也就是说,满足上述要求的POJO都可以算作Struts2的Action实现。

Action类实现Action的接口

为了让开发的Action类更规范,Struts2提供了一个Action接口,用户在实现Action控制类时,可以实现struts2提供的这个Action接口。

示例代码:

public class ActionDemo implements Action {

	@Override
	public String execute() throws Exception {
		System.out.println("ActionDemo");
		reture null;
	}
}

提供了5个字符串常量,它们的作用是统一execute()方法的返回值,具体如下:

  • SUCCESS:success,代表成功;
  • NONE:none,代表页面不跳转;
  • ERROR:error,代表跳转到错误页面;
  • INPUT:input,数据校验的时候跳转的路径;
  • LOGIN:login,用来跳转到登录页面。

Action类继承ActionSupport类

示例代码:

public class ActionDemo extends ActionSupport {

	@Override
	public String execute() throws Exception {
		System.out.println("ActionDemo");
		reture null;
	}
}

ActionSupport类本身实现了Action接口,是struts2中默认的Action接口的实现类,所以继承ActionSupport就相当于实现了Action接口。ActionSupport类还实现了Validateable、ValidationAware、TextProvider、LocaleProvider和Serializable等接口,来为用户提供更多的功能。

ActionSupport类中提供了很多默认方法,这些默认方法包括获取国际化信息的方法、数据校验的方法、默认的处理用户请求的方法等。实际上,ActionSupport类是Struts2默认的Action处理类,如果让编写的Action类继承该ActionSupport类,则会大大简化Action的开发。

标签: none