一、通过ActionContext来获得:
public class LoginAction1 extends ActionSupport {
Map request;
Map session;
Map application;
public LoginAction1(){
request=(Map)ActionContext.getContext().get("request");
session=ActionContext.getContext().getSession();
application=ActionContext.getContext().getApplication();
}
public String execute() {
request.put("r1", "r1--");
session.put("s1", "s1==");
application.put("a1", "a199");
return SUCCESS;
}
}
前台页面通过<s:property value="#request.r1"/>、<s:property value="#request.s1"/>、<s:property value="#request.a1"/>来取得
二、通过IoC(控制反转),将值DI(注入)到action中(大部分情况下只用这种):
Action必须实现相应的Aware接口
首先Struts2先获得HttpRequest等相关对象,再将它们转换成Map。Struts2将这些Map注入到Action中相应的Map中相应变量,这些情况就叫做依赖注入。控制反转的概念是:action的这些Map不是由自己控制,是反过来交给Struts2来控制。
public class LoginAction2 extends ActionSupport implements RequestAware,
SessionAware, ApplicationAware {
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
public String execute(){
request.put("r1", "r1_IoC");
session.put("s1", "s1_IoC");
application.put("a1", "a1_IoC");
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;
}
}