一、Action概要

二、动态调用

 

三、通配符(规则:*_*等价于{1_2})

四、获取参数

  1. 1 1、方式一:逐个获取(推荐使用)
  2. 2 package com.aaron.action.param;
  3. 3 import com.opensymphony.xwork2.ActionSupport;
  4. 4 public class ParamMethodOneAction extends ActionSupport{
  5. 5 private int id;
  6. 6 private String userName;
  7. 7 private String userPass;
  8. 8 @Override
  9. 9 public String execute() throws Exception {
  10. 10 System.out.println("id:"+id+"---"+"userName:"+userName+"---"+"userPass:"+userPass);
  11. 11 this.addFieldError("id", id+"");
  12. 12 this.addFieldError("userName", userName);
  13. 13 this.addFieldError("userPass", userPass);
  14. 14
  15. 15 return SUCCESS;
  16. 16 }
  17. 17 public int getId() {
  18. 18 return id;
  19. 19 }
  20. 20 public void setId(int id) {
  21. 21 this.id = id;
  22. 22 }
  23. 23 public String getUserName() {
  24. 24 return userName;
  25. 25 }
  26. 26 public void setUserName(String userName) {
  27. 27 this.userName = userName;
  28. 28 }
  29. 29 public String getUserPass() {
  30. 30 return userPass;
  31. 31 }
  32. 32 public void setUserPass(String userPass) {
  33. 33 this.userPass = userPass;
  34. 34 }
  35. 35 }
  36. 36
  37. 37 2、方式二:用某个entity获取(推荐使用)
  38. 38 package com.aaron.action.param;
  39. 39
  40. 40 import com.aaron.action.model.User;
  41. 41 import com.opensymphony.xwork2.ActionSupport;
  42. 42
  43. 43 /**
  44. 44 * 传递参数一般使用这种方式
  45. 45 * @author qiuyong
  46. 46 */
  47. 47 public class ParamMethodTwoAction extends ActionSupport {
  48. 48
  49. 49 private User user;
  50. 50 @Override
  51. 51 public String execute() throws Exception {
  52. 52 System.out.println("id:"+user.getId()+"---"+"userName:"+user.getUserName()+"---"+"userPass:"+user.getUserPass());
  53. 53 this.addFieldError("id", user.getId()+"");
  54. 54 this.addFieldError("userName", user.getUserName());
  55. 55 this.addFieldError("userPass", user.getUserPass());
  56. 56 return SUCCESS;
  57. 57 }
  58. 58
  59. 59 public User getUser() {
  60. 60 return user;
  61. 61 }
  62. 62
  63. 63 public void setUser(User user) {
  64. 64 this.user = user;
  65. 65 }
  66. 66
  67. 67 }
  68. 68
  69. 69 3、方式三:利用inplModelDriven(不推荐使用)
  70. 70 package com.aaron.action.param;
  71. 71 import com.aaron.action.model.User;
  72. 72 import com.opensymphony.xwork2.ActionSupport;
  73. 73 import com.opensymphony.xwork2.ModelDriven;
  74. 74
  75. 75 /**
  76. 76 * @author qiuyong
  77. 77 * 这种方式一般不用
  78. 78 */
  79. 79 public class ParamMethodThreeAction extends ActionSupport implements ModelDriven<User>{
  80. 80 private User user=new User();
  81. 81
  82. 82 @Override
  83. 83 public String execute() throws Exception {
  84. 84 System.out.println("id:"+user.getId()+"---"+"userName:"+user.getUserName()+"---"+"userPass:"+user.getUserPass());
  85. 85 this.addFieldError("id", user.getId()+"");
  86. 86 this.addFieldError("userName", user.getUserName());
  87. 87 this.addFieldError("userPass", user.getUserPass());
  88. 88 return SUCCESS;
  89. 89 }
  90. 90
  91. 91 public User getModel() {
  92. 92 return user;
  93. 93 }
  94. 94
  95. 95 public User getUser() {
  96. 96 return user;
  97. 97 }
  98. 98
  99. 99 public void setUser(User user) {
  100. 100 this.user = user;
  101. 101 }
  102. 102 }

五、访问Web元素

  1. 1Map类型_Ioc方式(推荐使用这种方式)
  2.  
  3. /**
  4. * (推荐使用这种方式)利用Ioc创造Map类型request、session、application
  5. * @author qiuyong
  6. */
  7. public class WebElementMapIocAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
  8. Map<String,Object> request;
  9. Map<String,Object> session;
  10. Map<String,Object> application;
  11.  
  12. @Override
  13. public String execute() throws Exception {
  14. request.put("request", "MapIocRequest");
  15. session.put("session","MapIocSession");
  16. application.put("application","MapIocApplication");
  17. return SUCCESS;
  18. }
  19.  
  20. public void setRequest(Map<String, Object> request) {
  21. this.request=request;
  22. }
  23.  
  24. public void setSession(Map<String, Object> session) {
  25. this.session=session;
  26. }
  27.  
  28. public void setApplication(Map<String, Object> application) {
  29. this.application=application;
  30. }
  31.  
  32. }
  33.  
  34. 2Map类型_Struts容器
  35.  
  36. /**
  37. * @author qiuyong
  38. * 利用Struts容器创造Map类型request、session、application
  39. */
  40. public class WebElementMapActionContextAction extends ActionSupport {
  41. Map request;
  42. Map session;
  43. Map application;
  44.  
  45. public WebElementMapActionContextAction() {
  46. request = (Map) ActionContext.getContext().get("request");
  47. session = ActionContext.getContext().getSession();
  48. application = ActionContext.getContext().getApplication();
  49.  
  50. }
  51.  
  52. @Override
  53. public String execute() throws Exception {
  54. request.put("request", "MapActionContextRequest");
  55. session.put("session","MapActionContextSession");
  56. application.put("application","MapActionContextApplication");
  57. return SUCCESS;
  58. }
  59. }
  60.  
  61. 3Servlet原始类型_Ioc方式
  62.  
  63. /**
  64. * @author qiuyong
  65. * 利用Ioc的方式创造原始类型的request、session、application
  66. */
  67. public class WebElementRealIocAction extends ActionSupport implements ServletRequestAware {
  68. HttpServletRequest request;
  69. HttpSession session;
  70. ServletContext application;
  71.  
  72. @Override
  73. public String execute() throws Exception {
  74. request.setAttribute("request","RealIocRequest");
  75. session.setAttribute("session","RealIocSession");
  76. application.setAttribute("application","RealIocApplication");
  77. return SUCCESS;
  78. }
  79.  
  80. public void setServletRequest(HttpServletRequest request) {
  81. this.request=request;
  82. this.session=request.getSession();
  83. this.application=session.getServletContext();
  84. }
  85. }
  86.  
  87. 4Servlet原始类型_Struts容器
  88.  
  89. /**
  90. * @author qiuyong
  91. * 利用Struts容器创造原始类型的request、session、application
  92. */
  93. public class WebElementRealActionContextAction extends ActionSupport {
  94. HttpServletRequest request;
  95. HttpSession session;
  96. ServletContext application;
  97.  
  98. public WebElementRealActionContextAction() {
  99. this.request=ServletActionContext.getRequest();
  100. this.session=request.getSession();
  101. this.application=session.getServletContext();
  102. }
  103.  
  104. @Override
  105. public String execute() throws Exception {
  106. request.setAttribute("request","RealActionContextRequest");
  107. session.setAttribute("session","RealActionContextSession");
  108. application.setAttribute("application","RealActionContextApplication");
  109. return SUCCESS;
  110. }
  111. }

 六、包含其他xml文件配置

源码链接:http://pan.baidu.com/s/1bpAAz19

借鉴:来自马士兵视频|Struts2的思考

Struts2中Action的使用(Struts2_Action)的更多相关文章

  1. Struts2中Action取得表单数据的几种方法

    Struts2中Action取得表单数据的几种方法   Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...

  2. 关于struts2中action请求会执行两次的问题

    关于struts2中action请求会执行两次的问题     在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...

  3. struts2中Action到底是什么,怎么理解

    struts2中Action到底是什么,怎么理解 1.配置完web.xml2.创建视图页面login.jsp3.创建业务控制器LoginAction类(解释说:创建业务控制器LoginAction类, ...

  4. jap页面获取struts2中action中变量的值

    在jsp页面中可以通过ONGL表达式获取struts2中action处理后的变量的值,这是因为每一个action在初始化后都会放到strackcontext中,可以通过ONGL表达式取到值. 注意要在 ...

  5. Struts2中Action接收参数的方法

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...

  6. Struts2中Action接收参数的方法主要有以下三种:

    Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式):     a.定义:在Action类中定义属性,创建get和set方法:     b.接 ...

  7. 基于用户登陆的struts2中action的分类详解

    在struts2中action的分类有:继承 ActionSupport 实现 Action,模型驱动(ModelDriven)的 Action,多方法的 Action三种方式. 1.继承 Actio ...

  8. Struts2中Action自己主动接收參数

    Struts2中Action接收參数的方法主要有下面三种: 1.使用Action的属性接收參数:(通过属性驱动式)     a.定义:在Action类中定义属性,创建get和set方法.     b. ...

  9. Struts2中Action接收参数

    Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属 ...

随机推荐

  1. JQ 数字验证

    $.fn.extend({ checknum: function (min, max, accurate) { if ($(this).val() != "") { $(this) ...

  2. Node.js Express 框架 POST方法

    POST 方法 以下实例演示了在表单中通过 POST 方法提交两个参数,我们可以使用 server.js 文件内的 process_post 路由器来处理输入: index.htm 文件代码修改如下: ...

  3. Java高效编程之四【C语言结构的替代】

    本章节可以跳过,但是[二十一]是非常有价值的 十九.用类代替结构 坚持以包含私有域和公有访问方法(accessor method)的类.Java平台中有几个类违反了“公有类不应该直接暴露数据域”的告诫 ...

  4. ExtJS6 TreePanel树节点合上展开显示不同图标

    TreePanel的节点如包含子节点,可在展开/合上时显示不同的图标,增强客户端效果,提高用户体验.非常简单,使用TreePanel的两个事件:beforeitemexpand和beforeitemc ...

  5. AutoHotkey 使用笔记

    注意事项 为了支持中文需安装 AutoHotkey_L Notepad2对ahk代码高亮和折叠支持良好,SciTE则能够提供输入提示 绿色版*.ahk关联AutoHotkey.exe就能双击运行 Au ...

  6. 在eclipse上开发nodejs

    首先到官网下载nodejs.地址:https://nodejs.org/en,可根据自己的操作系统选择下载. 安装好后.进入命令行输入node ,然后输入console.log("hello ...

  7. java 使用 集合 制作学生管理系统

    以上是文件组织结构 下面是个.java的具体代码: package com.collection.students.pojo; public class Student { private Strin ...

  8. heartbeat

    http://www.bubuko.com/infodetail-1174857.html http://www.cnblogs.com/zhanjindong/p/3618055.html http ...

  9. 压力测试工具JMeter入门教程

    1.Jmeter 概要描叙 jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台.多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用,估计是不要钱吧,哈哈,功能上来说,整个平台 ...

  10. 简单介绍MR21和MR22

    MR21和MR22都可以用来调整价格,MR21是更改的单个物料的价格,MR22更改的是库存总价值,所以MR21可以更改移动平均价(V)或标准价(S)的物料价格.MR22只能更改移动平均价(V)的物料价 ...