struts2值的传递与接收总结
来源:互联网 发布:詹姆斯和科比知乎 编辑:程序博客网 时间:2024/06/05 14:27
struts2的传值与接收(Servlet API解耦的访问方式)
为了避免与Servlet API耦合在一起,方便Action类做单元测试,
Struts2对HttpServletRequest、HttpSession和ServletContext进行了封装,
构造了三个Map对象来替代这三种对象.
1.ActionContext方式
简述: ActionContext是Action的上下文,Struts2自动在其中保存了一些在Action执行过程中所需的对象,比如application,session, request,parameters,等。Struts2会根据每个执行HTTP请求的线程来创建对应的ActionContext,即一个线程有一个唯一的ActionContext,使用者可以使用静态方法ActionContext.getContext()来获取当前线程的ActionContext。
统一共用方法:ActionContext actionContext=ActionContext.getContext();//获取对象ActionContext
(1).获取application对应的Map,并向其中加一个添加一个属性:
通过调用ActionContext对象getApplication
Map<String, Object> applicationMap=actionContext.getApplication();
添加属性:
applicationMap.put("applicationKey","applicationValue");//此为Map的键值对
在jsp等请求页面获取值方法:用EL表达式:
${applicationScope.applicationKey} 或者直接写 ${applicationKey}
获取请求页面的属性值:
Objectobject=applicationMap.get("XX");//xx为请求页面的属性
(2).session方式:(与applicationMap方式有异曲同工之妙)
通过调用ActionContext对象getSession
Map<String, Object> sessionMap=actionContext.getSession();
添加属性:
sessionMap.put("sessionKey", "sessionValue");
(3)request方式:
ActionContext中并没有提供getRequest
需要手工调用get()方法,传入request字符串来获取
需要手工调用get()方法,传入request字符串来获取
Map<String, Object> requestMap=(Map<String, Object>) actionContext.get("request");
requestMap.put("requestKey", "requestValue");
(4)paramters方式:
需要注意的是:
A:paramtersMap的只能读不能写,如果写了不会出错,但也不起作用
B:getParameters的返回值为在map<String,object>,而不是Map<string,String[]>
获取请求参数:
Map<String,Object> parameters=actionContext.getParameters();
Object object=parameters.get("XX");
2.实现AwareAction接口的方式:
简述: struts2提供了这四个Aware接口用于Action类的实现,从而注入对应的application、request、session,parameter,
不过它们都是Map类型的。这和ActionContext一样是解耦的,即没有引入servlet相关的包,是在struts2内部的。
(1)ApplicationAware接口
实现接口方法:
private Map<String,Object> application;
@Override
public void setApplication(Map<String, Object> application) {
this.application=application;
}
public void setApplication(Map<String, Object> application) {
this.application=application;
}
操作:
//1.向application中加入一个属性:applicationKey-applicationValue
application.put("applicationKey", "applicationValue");
//2.从请求页面 application中读取一个属性date,并打印
请求页面:application.setAttribute("date", new Date());
application.put("applicationKey", "applicationValue");
//2.从请求页面 application中读取一个属性date,并打印
请求页面:application.setAttribute("date", new Date());
Action接受:appliation.get("date");
对于1的操作的前台接收数据通过EL表达式可以接收:
${applicationScope.applicationKey }或者直接的 ${applicationKey}、
(2).SessionAware,RequestAware(与ApplicationAware实现方式雷同)
A:SessionAware
private Map<String,Object> session;
@Override
public void setSession(Map<String, Object> session) {
this.session=session;
}
B:RequestAware
private Map<String, Object> request;
@Override
public void setRequest(Map<String, Object> request) {
this.request=request;
}
@Override
public void setSession(Map<String, Object> session) {
this.session=session;
}
B:RequestAware
private Map<String, Object> request;
@Override
public void setRequest(Map<String, Object> request) {
this.request=request;
}
RequestAware和SessionAware的传值都是用Map中的put方法(参考ApplicationAware)
传前台接收值的方式同样的EL表达式
(3).ParameterAware
private Map<String,String[]> parameters;
@Override
public void setParameters(Map<String, String[]> parameters) {
this.parameters=parameters;
}
@Override
public void setParameters(Map<String, String[]> parameters) {
this.parameters=parameters;
}
同样的需要注意:
A: ParameterAware方式只能接受,不能put
B:Map类型是 Map<String,String[]>
C:接受请求数据:
parameters.get("name");//这样打印出的是:[Ljava.lang.String;@2c0a8c7a
所以得这样接收请求:(parameters.get("name"))[i] 因为parameters是String[]数组形式。
阅读全文
1 0
- struts2值的传递与接收总结
- Struts2接收传递的参数
- Struts2中Action接收传递的参数
- 总结Action传递给jsp的值的接收问题
- 总结Action传递给jsp的值的接收问题
- struts2的Aciton与jsp之间传递参数(总结)
- JSP与Servlet的参数传递接收
- Spring MVC参数的传递与接收
- struts2中的Action接收表单传递的参数
- struts2中的Action接收表单传递过来的参数
- 在Action中使用request接收Struts2传递的参数
- Struts2接收参数总结
- Struts2接收checkbox的值
- URL传递与接收
- 总结下struts2前台传递值到后台的方式
- JavaScript接收http get传递的值
- 使用Javascript接收get传递的值
- Struts2之Action请求方式与参数传递的方式总结
- new与malloc
- leetcode 274. H-Index
- 编辑修改公众号资料-微信公众号使用教程6
- EditText属性大全详解
- JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分
- struts2值的传递与接收总结
- BOM--window对象
- 用递归打印数字-LintCode
- redis-lua脚本
- Android 测试存储设备的读写速度
- MySQL数据库优化总结
- 学习理解CountDownLatch
- 网页弹框插件bootbox
- iOS 11 与 iPhone X的适配那些事