一、实现Action类

1、POJO实现(Plain Ordinary Java Object 简单的java对象)

public class User1 {
public String execute(){
System.out.println("Action1");
return "success";
}
}

  Action类不继承任何特殊类,不实现任何特殊接口,只要有一个公共的无参的构造函数(默认构造函数即可)和一个execute()方法

  execute()方法要求:public类型,返回值String,方法无参

2、实现Action接口

public class User2 implements Action {
public String execute() throws Exception {
System.out.println("Action2");
return "success";
}
}

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;
}

  常量使用:execute()中return ”success“等同于return SUCCESS

3、继承ActionSupport类

public class User3 extends ActionSupport {
   private static final long serialVersionUID=1L;
@Override
public String execute() throws Exception {
System.out.println("Action3");
return SUCCESS;
}
}

  因为ActionSupport类实现了Serializable接口,所以继承的Action类需要声明变量 serialVersionUID

二、配置Action

Action元素属性

属性 说明 是否必须
name 标识Action,指定Action所处理请求的URL
class 指定Action对应的实现类
method 指定请求Action时的调用方法

如果没有指定class属性值,其默认值为com.opensymphony.xwork2.ActionSupport类,该类使用默认处理方法execute(),ActionSupport类中的execute()方法不会做任何处理,二十直接返回success值。

如果没有指定method属性,Action调用class的execute()方法。

三、使用通配符

<package name="test" namespace="/test" extends="struts-default">
<action name="ActionTest_*" class="com.test.pojo.TestAction2" method="{1}">
<result name="hello">/{}.jsp</result>
<result name="hi">/{}.jsp</result>
</action>
</package>

在上述代码中,当客户端发送/test/ActionTest_hello.action这样的请求时,<action>元素的name属性就被设置成ActionTest_hello,method就被设置成hello;,当客户端发送/test/ActionTest_hi.action这样的请求时,<action>元素的name属性就被设置成ActionTest_hi,method就被设置成hi。

结果:

其中method的属性值中的数字1匹配表示匹配第一个*。如果定义的Action名称为*_*,class属性为action.{1},method属性值为{2}。如果Action名称设置为*,则可以匹配所有Action。

最新文章

  1. Ajax 与 XmlHttpRequest
  2. ADSL自动更换IP地址源代码
  3. NSFileManeger
  4. Memcache的总结介绍和一些命令的总结
  5. SQL Server Insert时开启显式事务
  6. VS2012离线安装Xamarin (含破解补丁)
  7. MySQL的事务
  8. Ubuntu下面配置问题
  9. 【BZOJ 1185】 凸包+旋转卡壳
  10. Tomcat部署(转)
  11. bzoj 4016 [FJOI2014]最短路径树问题(最短路径树+树分治)
  12. lesson6:java线程中断
  13. 添加python第三方插件时出现的问题
  14. 介绍两个Android不常用的Drawable:GradientDrawable和 StateListDrawable
  15. Cocos2d-X 精灵、动作效果
  16. 泡泡一分钟:Semantic Labeling of Indoor Environments from 3D RGB Maps
  17. Java Generator
  18. 【linux kernel】 中断处理-中断上半部【转】
  19. OpenGL核心技术之帧缓冲
  20. 正则表达式学习之grep,sed和awk

热门文章

  1. js的alert抛出之后怎么让页面停止执行?
  2. [USACO11FEB] Cow Line
  3. python基础---输入输出
  4. 51nod 1873 高精度计算
  5. Sass 基本特性-运算 感觉满满都是坑
  6. 【HNOI】 小A的树 tree-dp
  7. Python 用ctypes观察Python对象的内存结构 -- (转)
  8. Eclipse中SVN更改连接用户
  9. 大原則 研讀 spec 與 code 的 心得
  10. linux arm的存储分布那些事之一