天天看點

Struts2的Action類擷取ServletAPI

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";
}