Action是Struts2的核心,其主要功能包括:
1.提供处理来自用户的请求的逻辑,协助框架确定返回什么视图。
2.将数据从请求传递到视图中。
创建Action
1.Struts2中actions的唯一要求是必须有一个无参数方法返回String或Result对象,并且必须是POJO。如果没有指定no-argument方法,则默认是使用execute()方法。
2.你还可以扩展ActionSupport类,该类可实现六个接口,包括Action接口。Action的接口如下:
public interface Action {
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";
public String execute() throws Exception;
}
为了说明action方法控制视图的要点,让我们对execute方法进行以下更改,并扩展ActionSupport类如下:
public class HelloWorldAction extends ActionSupport{
private String name;
public String execute() throws Exception {
if ("SECRET".equals(name))
{
return SUCCESS;
}else{
return ERROR;
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我们在execute方法中使用一些逻辑来查看name属性。如果属性等于字符串“SECRET”,我们返回SUCCESS作为结果,否则我们返回ERROR作为结果。
对struts.xml进行配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="helloworld" extends="struts-default">
<action name="hello"
class="HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
<result name="error">/AccessDenied.jsp</result>
</action>
</package>
</struts>
当execute()方法返回SUCCESS时,将HelloWorld.jsp视图返回;当返回ERROR时,将AccessDenied.jsp视图返回。