一、Action概要

二、动态调用

 

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

四、获取参数

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

五、访问Web元素

 1、Map类型_Ioc方式(推荐使用这种方式)

 /**
  * (推荐使用这种方式)利用Ioc创造Map类型request、session、application
  * @author qiuyong
  */
 public class WebElementMapIocAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
     Map<String,Object> request;
     Map<String,Object> session;
     Map<String,Object> application;

     @Override
     public String execute() throws Exception {
         request.put("request", "MapIocRequest");
         session.put("session","MapIocSession");
         application.put("application","MapIocApplication");
         return SUCCESS;
     }

     public void setRequest(Map<String, Object> request) {
         this.request=request;
     }

     public void setSession(Map<String, Object> session) {
         this.session=session;
     }

     public void setApplication(Map<String, Object> application) {
         this.application=application;
     }

 }

 2、Map类型_Struts容器

 /**
  * @author qiuyong
  * 利用Struts容器创造Map类型request、session、application
  */
 public class WebElementMapActionContextAction extends ActionSupport {
     Map request;
     Map session;
     Map application;

     public WebElementMapActionContextAction() {
         request = (Map) ActionContext.getContext().get("request");
         session = ActionContext.getContext().getSession();
         application = ActionContext.getContext().getApplication();

     }

     @Override
     public String execute() throws Exception {
         request.put("request", "MapActionContextRequest");
         session.put("session","MapActionContextSession");
         application.put("application","MapActionContextApplication");
         return SUCCESS;
     }
 }

 3、Servlet原始类型_Ioc方式

 /**
  * @author qiuyong
  * 利用Ioc的方式创造原始类型的request、session、application
  */
 public class WebElementRealIocAction extends ActionSupport implements ServletRequestAware {
     HttpServletRequest request;
     HttpSession session;
     ServletContext application;

     @Override
     public String execute() throws Exception {
         request.setAttribute("request","RealIocRequest");
         session.setAttribute("session","RealIocSession");
         application.setAttribute("application","RealIocApplication");
         return SUCCESS;
     }

     public void setServletRequest(HttpServletRequest request) {
         this.request=request;
         this.session=request.getSession();
         this.application=session.getServletContext();
     }
 }

 4、Servlet原始类型_Struts容器

 /**
  * @author qiuyong
  * 利用Struts容器创造原始类型的request、session、application
  */
 public class WebElementRealActionContextAction extends ActionSupport {
     HttpServletRequest request;
     HttpSession session;
     ServletContext application;

     public WebElementRealActionContextAction() {
         this.request=ServletActionContext.getRequest();
         this.session=request.getSession();
         this.application=session.getServletContext();
     }

     @Override
     public String execute() throws Exception {
         request.setAttribute("request","RealActionContextRequest");
         session.setAttribute("session","RealActionContextSession");
         application.setAttribute("application","RealActionContextApplication");
         return SUCCESS;
     }
 }

 六、包含其他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. BeanUtils

    BeanUtils包的使用   BeanUtils工具包是由Apache公司所开发,主要是方便程序员对Bean类能够进行简便的操作. 在使用BeanUtils工具包之前我们需要的Jar包有以下几种: ...

  2. 《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍

    这算是本系列文章的一个序吧,主要是为以后的学习做铺垫,文本分为三个部分,第一部分是对于网上一些比较旧的资料的问题的一些更正,当然我也不可能看过所有的资料,难免会有遗漏.第二部分是D语言最基本的规定,第 ...

  3. 最新IP地址数据库Dat格式-高性能高并发版(2017年1月)

    最新IP地址数据库->Dat格式 高性能格式->qqzeng-ip.dat 国内版-20170101-Dat 版                国外版-20170101-Dat 版     ...

  4. Redmine性能测试

    Redmine部署使用有一个月了,反馈有时很慢. 1.查看log发现,事务更新后要发送Email,如果连接邮件服务器有问题,会等待超时,导致很慢. 2.解决发送邮件问题后,仍然有时慢,ActiveRe ...

  5. js判断变量是否等于undefined

    js中判断变量是否等于undefined,不是使用==,而是使用typeof. typeof(featureId)!="undefined"

  6. MKRCVCD-MKRCVCDSER.exe can't start in service

    Logfile contents: 2016/11/23 02:15:09 NamePipeSer Log Start.2016/11/23 02:15:09 Start C:\Program Fil ...

  7. PHP中include()与require()

    引用文件的方法有两种:require 及 include. require 的使用方法如 require("file.php"); .这个函数通常放在 PHP 程序的最前面,PHP ...

  8. seaJS

    1. seajs是用来进行模块化管理,将每一个功能当做是一个功能模块,在模块之间运用require进行连接,类似于java/C++/C等语言中的类. 2. 在文件html 的尾部引入入seajs的文件 ...

  9. 使用maven搭建SpringMVC项目环境

    Window环境下用maven新建一个项目: mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=cn-cisol -Dartif ...

  10. Hibernate框架简述 内部资料 请勿转载 谢谢合作

    Hibernate的核心组件在基于MVC设计模式的JAVA WEB应用中,Hibernate可以作为模型层/数据访问层.它通过配置文件(hibernate.properties或hibernate.c ...