Struts2中對HttpServletRequest、HttpSession、ServletContext進行了封裝解耦,并構造了三個Map對象用于替換列舉的對象。
擷取方式:
① 通過ActionContext擷取(以下擷取方式僅擷取ServletAPI的域空間,并
非真正具體的ServletAPI)
向Request域空間中放入資料:ActionContext.getContext().put(“req”, “req_value”);
向Session域空間中放入資料:ActionContext.getContext().getSession().put(“ses”, “ses_value”);
向Application域空間中放入資料:ActionContext.getContext().getApplication().put(“app”, “app_value”);
② 通過ServletActionContext擷取(
擷取真正具體的ServletAPI)
向Request域空間中放入資料:ServletActionContext.getRequest().setAttribute(“req”, “req_value”);
向Session域空間中放入資料:ServletActionContext.getRequest().getSession().setAttribute(“ses”, “ses_value”);
向Application域空間中放入資料:ServletActionContext.getServletContext().setAttribute(“app”, “app_value”);
③ 通過實作特定接口擷取(action類實作RequestAware、SessionAware、ApplicationAware接口)
// 三大成員變量
private Map<String, Object> req;
private Map<String, Object> ses;
private Map<String, Object> app;
// 三大成員屬性
public void setRequest(Map<String, Object> request) {
this.req = request;
}
public void setSession(Map<String, Object> session) {
this.ses = session;
}
public void setApplication(Map<String, Object> application) {
this.app = application;
}
public String execute() {
req.put("req", "req_value");
ses.put("ses", "ses_value");
app.put("app", "app_value");
return "success";
}