一個struts2的請求就是一個action
能夠處理struts2請求的類就是Action類
獲取web資源的方法:(松耦合)
通過ActionContext獲取
ActionContext 是action的執行上下文對象 ,可在一個ActionClass中獲取action實例的上下文
ActionContext actionContext = ActionContext.getContext();
Map<String,Object> applicationMap = actionContext.getAppliction();
aplicationMap.put("applicationKey","applicationValue");
//相同的還有
Map<String,Object> sessionMap = actionContext.getSession();
sessionMap.put("sessionKey","sessionvalue");
//獲取request比較特殊,strurs2并沒有提供該方法,所以要手動來獲取
Map<String,Object> requsetMap = (Map<String,object) actionContext.get("request");
requestMap.put("requestKey","requestValue");
//獲取鏈接中的參數
Map<String,Object> parametersMap = actionContext.getParameters();
(String[]) parametersMap.get("name")[0];
//parameters只能讀 不能寫入數據
通過Aware 接口獲取
public class TestAware implements ApplicationAware, SessionAware, RequestAware{
public String execute(){
//添加一個屬性
application.put("applicationKey","applicationValue");
//獲取一個屬性
Object data = application.get("data");
return "success";
}
private Map<String,Object> application;
@override
public void setApplication(Map<String,Object> application){
this.application = application;
}
}
需要注意的是 session 對應的Map是SessionMap類型的,通過強轉后調用其invalidate()方法會使其失效
SessionMap sm = (SessionMap) sessionMap;
sm.invalidate();