Struts2框架学习Action命名空间&&创建方式
Struts2框架中Action类时一个单独的javabean对象,相比struts1来说,不需要去继承任何类型或实现任何借口,表单数据包含在Action中,而Struts1则必须继承org.apache.struts.action.Action或者其子类才行,相比之下,耦合度减小了许多。
对于struts2来说,在struts.xml配置是其核心内容,今天主要介绍其命名空间和其三种创建方式。
命名空间namespace
<package name="default" namespace="/" extends="struts-default">
namespace在缺省的情况下相当于"";
三种创建方式:
方式一:创建一个POJO类
POJO(PlainOrdinary Java Object)简单的Java对象
struts.xml配置
<!-- 使用pojo创建action -->
<action name="demo1" class="cn.itcast.action.Demo1Action">
<result>/success.jsp</result>
</action>
//创建一个Action,使用pojo类
public class Demo1Action {
public String execute() {
return "success";
}
}
- 优点:无耦合
- 缺点:所有功能都需要自己实现
方式二:创建一个类,实现Action接口
Action接口 com.opensymphony.xwork2.Action
struts.xml
<!-- 使用Action接口来实现action创建 -->
<action name="demo2" class="cn.itcast.action.Demo2Action">
<result>/success.jsp</result>
</action>
Action:
//继承Action
public class Demo2Action implements Action {
public String execute() throws Exception {
// SUCCESS代表数据处理成功
return SUCCESS;
}
}
优点:在Action接口中定义了请求处理方法execute,还定义了五个结果视图
- public static final String SUCCESS ="success"; //数据处理成功(成功页面)
- public static final String NONE ="none"; //页面不跳转 return null;效果一样
- public static final String ERROR ="error"; //数据处理发送错误 (错误页面)
- public static final String INPUT ="input"; //用户输入数据有误,通常用于表单数据校验(输入页面)
- public static final String LOGIN ="login"; //主要权限认证 (登陆页面)
缺点:具体的功能还需要自己手动实现.
方式三:创建一个类,继承ActionSupport
ActionSupport com.opensymphony.xwork2.ActionSupport
struts.xml
<!-- 使用继承Actionsupport来实现action创建 -->
<action name="demo3" class="cn.itcast.action.Demo3Action"
method="add">
<result>/success.jsp</result>
</action>
Action
//继承于ActionSupport
public class Demo3Action extends ActionSupport {
public String add() throws Exception {
System.out.println("add method");
return SUCCESS;
}
}
- 优点:不仅具有了Action接口中提供的功能(ActionSupport类实现了Action接口),还具有国际化参数校验错误信息设置功能
- 缺点:耦合度高
介于优缺点的比较,在开发的过程中我们还是使用第三种比较多,纵然耦合度高,但是由于不用着急动手去实现,我们完全可以通过其他的方法去将耦合度降低。
三种方式都可以达到相同的目的,如果成功跳转则可将其设置的jsp页面显示出来。再此省略不计