struts2学习札记02-Action的配置及自定义action

struts2学习笔记02-Action的配置及自定义action
第二章 Action
2.0 action 的作用
将请求与界面分开具体视图的返回由Action来决定。
具体手段是根据action返回的字符串找到具体的配置项。
例如:action有如下方法

public String execute(){
	if(name== null || !name.equals(“admin”)){
		return “error”;
	}
	return “success”;
}


则在struts.xml中可以这样配置

<action name="user" class="com.jnmc.unique.ModelDriven.Action">
<result>/user_add_success.jsp</result>
<result name="error">/user_add_error.jsp</result>
</action>


如果execute返回error,则访问user_add_error.jsp.若返回success,则访问user_add_success.jsp
<result>的name属性默认是success,所以success可以不写

2.1 package
【属性作用】
name:必选属性。包名,用于定义action的访问路径,所以可以区分同名的action
extends:可选属性。指定父包。子包会继承父包的所有配置。
namespace:可选属性。定义action访问路径。若不指定,默认namespace=”” ,表示匹配所有路径。即只要指定action的名字,敲任何路径都可以访问到该包下对应的action。

2.2 action


【属性作用】
type:可选。设置页面跳转的类型。属性值可以为是chain、redirect、dispatcher、redirectAction等。
class:可选。指定action类的完整名。若不指定,则默认为com.opensymphony.xwork2.ActionSupport类
因为struts-default.xml中有如下配置:

<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />


name:必选。指定action的访问名。访问形式为actionName.extension。
extension为后缀名,由于default.properties中有如下配置:
struts.action.extension=action,,
这句话指定了在默认情况下action的后缀名为action或者为空。
当然,如果不想使用默认配置,我们可以修改action的后缀名,只需在struts.xml中配置一个常量,如:设置后缀名为do或空

<constant name="struts.action.extension" value="do,," />


2.3 定义自己的action


可以有三种方法,其中第三种方法最常用,前两种只做了解。
(1).自定义Action类


①自义类,该类只要拥有如下方法即可
public String execute(){
        return “success”;
}
缺点:难于控制,容易写错,并且没有继承来的方法可用

②因为所有Action均继承自Action接口
所以只需实现Action接口,并实现execute()方法

缺点:其中的方法都是空的,没有实际作用
③继承com.opensymphony.xwork2.ActionSupport类(最常用)

优点:已经封装各种有用的方法


(2).struts.xml配置

最后不要忘了在struts.xml中注册我们自己的action

<action name="index" class=”packagename.classname”>
<result>/index.jsp</result>
</action>