上一节使用的ApplicationContext获取web资源,本节使用的是XxxAware接口。
新建一个Action:
本例只实现application的读取存入操作,session等域对象类似。
☆☆☆☆☆☆☆ActionContext与Aware接口的选用
如果Action类中有多个action方法,每个方法都需要用到web域对象或者params则建议实现Aware接口,因为只要定义成员变量就可以了(不用在每个方法里获取)
package com.hcx.action;
import java.util.Map;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
/**
* 类似于依赖注入
* 使用ActionContext和Aware接口建議:
* 若一個Action類中有多個action方法,切多個方法都需要使用域對象Map或para,則
* 建議使用Aware系列接口
* @author hcx
*
*/
public class TestAwareAction implements ApplicationAware,SessionAware,RequestAware,ParameterAware{
public String execute(){
//1.向application中加入一个属性
application.put("applicationKey2", "applicationValue2");
//2。从application中读取一个属性
System.out.println(application.get("date"));
return "success";
}
// 定义相应的成员变量
private Map<String,Object> application;
private Map<String,Object> session;
private Map<String,Object> request;
private Map<String, String[]> parameter;
public void setApplication(Map<String, Object> arg0) {
this.application=arg0;
}
public void setSession(Map<String, Object> arg0) {
this.session=arg0;
}
public void setRequest(Map<String, Object> arg0) {
this.request=arg0;
}
public void setParameters(Map<String, String[]> arg0) {
this.parameter=arg0;
}
}