Struts2中Action的使用(Struts2_Action)
一、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)的更多相关文章
- Struts2中Action取得表单数据的几种方法
Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...
- 关于struts2中action请求会执行两次的问题
关于struts2中action请求会执行两次的问题 在struts2中发现,调用action中的方法,方法会被执行两次,后来发现调用的方法是get开头的,把它改为其他名称开头的后,就不会执行 ...
- struts2中Action到底是什么,怎么理解
struts2中Action到底是什么,怎么理解 1.配置完web.xml2.创建视图页面login.jsp3.创建业务控制器LoginAction类(解释说:创建业务控制器LoginAction类, ...
- jap页面获取struts2中action中变量的值
在jsp页面中可以通过ONGL表达式获取struts2中action处理后的变量的值,这是因为每一个action在初始化后都会放到strackcontext中,可以通过ONGL表达式取到值. 注意要在 ...
- Struts2中Action接收参数的方法
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用A ...
- Struts2中Action接收参数的方法主要有以下三种:
Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数(最原始的方式): a.定义:在Action类中定义属性,创建get和set方法: b.接 ...
- 基于用户登陆的struts2中action的分类详解
在struts2中action的分类有:继承 ActionSupport 实现 Action,模型驱动(ModelDriven)的 Action,多方法的 Action三种方式. 1.继承 Actio ...
- Struts2中Action自己主动接收參数
Struts2中Action接收參数的方法主要有下面三种: 1.使用Action的属性接收參数:(通过属性驱动式) a.定义:在Action类中定义属性,创建get和set方法. b. ...
- Struts2中Action接收参数
Struts2中Action接收参数的方法主要有以下三种: Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数: a.定义:在Action类中定义属 ...
随机推荐
- LeetCode: Linked List Random Node
这题参照http://blog.jobbole.com/42550/ 用的蓄水池算法,即更改ans的概率为1/(当前length) /** * Definition for singly-linked ...
- sychronized 和 Lock的比较
sychronized是在jvm层面上实现的,可以通过一些监控工具监控sychronized的锁定,而且在代码执行出现异常时,jvm会自动释放锁,但是使用Lock就不行,lock是通过代码实现的,最终 ...
- Shopex4.85商派2014年商业模板和商业插件共600多套仅售600元送分销王2代SEO排名神具。
这批shopex商业插 件+模板都是本人从官方模板网站收购.高价.交换.以及收藏得来.本人因现实工作太忙不得不转手出售这批源代码,限时低价出售给和我一样从事shopex 系统网店电子商务的兄弟姐妹们, ...
- iOS开发:(线程篇-上)线程和进程
iOS开发多线程篇—多线程简单介绍 一.进程和线程 1.什么是进程 进程是指在系统中正在运行的一个应用程序 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内 比如同时打开QQ.Xcod ...
- oracle 11g 服务启动时提示1053错误,服务启动不了,重新配置监听解决问题
早上发现oracle服务启动不了了,找了很多资料,没找到有用的.通过重新配置监听解决问题.
- DELPHI XE5 与SQLITE
最近一次使用DELPHI做项目是使用DELPHI2009,为了访问本地数据库方便,使用ACCESS数据库,不需要安装驱动,(WINDOWS自带),但是ACCESS数据库的性能确实很糟糕,通过ADO连接 ...
- oracle优化:避免全表扫描(高水位线)
如果我们查询了一条SQL语句,这条SQL语句进行了全表扫描,那到底是扫描了多少个数据块呢?是表有多少数据,就扫描多少块吗?不是的.而是扫描高水位线一下的所有块.有的时候有人经常说,我的表也不大呀,怎么 ...
- Web 2D/3d
首选应该是H5,通过现成的js库来实现,兼容性应该不错 其次可以考虑使用Unity3d,开发起来应该比较快 搜集点资料先放起来~ Unity3d: http://unity3d.com/cn/get- ...
- Android 控件属性介绍
1.LinearLayout(线性布局): 可以分为水平线性:android:orientation= " horizontal " 和垂直线性:android:orientati ...
- iOS多线程同步锁
在iOS中有几种方法来解决多线程访问同一个内存地址的互斥同步问题: 方法一,@synchronized(id anObject),(最简单的方法)会自动对参数对象加锁,保证临界区内的代码线程安全 @s ...