一、动作
应用程序可以完成的每一个操作都可以称之为一个动作。例如,显示一个登录表单、把产品信息保存起来。创建各种动作时Struts应用程序开发中最重要的任务。有些动作很简单,而有些动作需要进行一些逻辑处理,这些逻辑需要些进动作类里。
二、动作类
普通java类,可以拥有实行和方法。同时,必须遵守以下规则:
1. 每个属性都必须有get和set方法。动作属性的名字必须遵守与JavaBean属性名相同的命名规则。动作的属性可以是任意类型,而不是仅限于String类型。从字符串到非字符串之间的数据转换自动发生。
2. 动作类必须有一个不带任何参数的构造器。如果动作类里没有构造器,Java编译器会替你创建一个不带任何参数的构造器。注意:如果已经有一个构造器且带有一个或多个参数,你就还需要写一个不带任何参数的构造器,否则Struts2将无法对动作类进行实例化。
3. 每个动作类至少要有一个方法供Struts在执行这个动作时调用。
4. 同一个动作类可以包含多个动作。在这个类场合里,动作类可以为不同的动作提供不同的方法。
5. 因为Struts2会为每个HTTP请求创建一个新的动作实例(Struts1不是这样),所以我们在编写一个动作类的时候不必再考虑线程的安全问题。
6. 在默认情况下,Struts2不创建HttpSession对象(Struts1不是这样)。不过JSP仍会那样做。因此,如果想要一个与会话完全无关的动作,就必须在所有JSP页面的开头加上:<% @page session="false" %>。
7. 动作类并不是非得扩展自某个特定的父类或是必须实现某种接口。话虽如此,但是编写的大多数动作类都将扩展自一个名为ActionSupport的基类,并因此而实现com.opensymphony.xwork2.Action接口。
8. 如果实现了Action接口,将继承下面5个静态字段:
(1)SUCCESS:表示动作执行成功并应该把结果视图显示给用户。
(2)NONE:表示动作执行成功但不应该把任何结果视图显示给用户。
(3)ERROR:表示动作执行失败并应该把一个报错视图显示给用户。
(4)INPUT:表示输入验证失败并应该把刚才用来获取用户输入的那个表单重新显示给用户。
(5)LOGIN:表示动作没有执行(因为用户没有登录),并应该把登录视图显示给用户。必须熟悉这些静态字段的值,因为在配置各种动作结果时候将会用到这些值。这些值如下:
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”;
9. 关于Struts动作有一个优点:不必考虑视图是如何访问它的。Struts会自动地把动作和其它对象压入值栈,而这个栈对视图而言是可访问的。