Action类:是Struts2框架的核心, 每个URL映射到特定的action,然后由对应的Action类提供处理来自用户的请求所需的处理逻辑。
action:
应用程序可以完成的每一个操作
.
例如
:
显示一个登陆表单
;
把产品信息保存起来。
action还有另外两个重要的功能。 第一,action在将数据从请求传递到视图(无论是JSP还是其他类型的结果)方面起着重要作用。 第二,action必须协助框架确定哪个结果应该呈现在响应请求的视图中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="helloworld" extends="struts-default">
<action name="hello"
class="cn.jcq.action.HelloWorldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
<result name="error">/AccessDenied.jsp</result>
</action>
</package>
</struts>
action标签中的class属性设置处理该请求的Action类
编写Action类的要求:
Action类,能够处理Struts2请求的类
1.属性的名字必须遵守JavaBeans进行配置,也就是说对应属性要有getter和setter方法
2.必须有一个供struts调用的方法,默认方法为execute,可以再action中通过method属性设置HTTP请求处理对应 的方法
3.需要有一个无参构造器
4.同一个Aciton类可以包含多个action方法,也可以通过动态调用处理方法,格式为actionName!methodName?params
5.struts2会为每一个HTTP请求都会新建一个Action实例,Action不是单例的,是线程安全的,
Action类的编写
在写Action类时可以通过与Servlet耦合(解耦)的方式,即通过Context上下文对象,或实现XxxAware接口来获取Servlet API,你还可以扩展ActionSupport类,该类可实现六个接口,包括Action接口。
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;
}
}