Action对象
Action对象用于对HTTP请求进行处理。在Struts2 API中,Action对象是一个接口。创建Action对象都需要直接或间接实现此对象。
经常extends ActionSupport类。
其方法声明:
public interface Action{
public static final String SUCCESS="success";
public static final String ERROR="error";
public static final String INPUT="input";
public static final String LOGIN="login";
public String execute() throws Exception;
}
SUCCESS:Action执行成功,并返回到成功页面。
NONE:Action执行成功,但不需要返回到成功页面。
ERROR:验证失败。
INPUT:需要返回到某个输入信息的页面。例如在修改某些信息时,加载数据后需要返回到修改页面。
LOGIN:用户登录Action验证失败,需要用户重新登录。
动态Action;DMI
Action请求的处理方式并非一定要通过execute方法处理,使用动态Action的处理方式更加方便。在实际的项目开发中,可以将同模块的一些请求封装到一个Action对象中,使用Struts2提供的动态Actioni对不同请求进行处理。例如对一个对象进行CRUD操作,如果创建多个Action对象,编写多个execute方法是很繁琐的。Struts2的动态Action的处理方式是通过请求Action对象中一个具体的方法实现动态的操作。action名!方法名。
Struts2多视图(JSP、Velocity、Freemarker)
Struts2支持JSP视图、Freemarker视图、Velocity视图。
<result name=”success” type=”freemarker”>test.ftl</result>
<result name=”success” type=”velocity”>test.vm</result>
Action与JSP交互
strut2 在action属性的值可以通过值栈传送到页面
setter方法注入
请求参数的注入原理:
表单提交的数据自动注入到与Action对象中对应的属性(setter方法)。getter方法是用于获取这个属性的值。
Domain Model
JSP传User对象。
Action接收User对象。
ModelDriven
如果一个Action是ModelDriven对象(是否实现了ModelDriven接口),则会调用getModel方法获取实体对象模型,获取到实体对象后,将其返回。
Action访问session、request、application
Struts2中提供了Map类型的request、session、application可以从ActionContext中获得。ActionContext位于com.opensymphony.xwork2包,是Action执行的上下文。
ActionContext context = ActionContext.getContent();
Map request = (Map<String,Object>)context.get("request");
Map session = context.getSession();
Map application = context.getApplication();