通过实现RequestAware,ApplicationAware,SessionAware,ParameterAware这四个接口,struts2会自动注入资源,然后获取即可。
至于是用ActionContext还是用XxxAware接口来获取比较好,主要就是看使用范围
选用的建议: 若一个 Action 类中有多个 action 方法, 且多个方法都需要使用域对象的 Map 或 parameters, 则建议使用Aware 接口的方式
package com.hgh.struts2.actioncontext;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
public class TestActionContextAware implements RequestAware,ApplicationAware,SessionAware,ParameterAware{
private Map<String, Object> sessionMap;
public String execute(){
sessionMap.put("sessionkey2", "sessionvalue2");
return "success";
}
@Override
public void setRequest(Map<String, Object> arg0) {
// TODO Auto-generated method stub
}
@Override
public void setParameters(Map<String, String[]> arg0) {
// TODO Auto-generated method stub
}
@Override
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
this.sessionMap = arg0;
}
@Override
public void setApplication(Map<String, Object> arg0) {
// TODO Auto-generated method stub
}
}