在使用struts2架構中,action類中沒有内置的request,resposne,session對象,擷取servletAPI方式有IOC和非IOC 方式:
非IOC方式:
Map map=ServletActionContext.getContext.getSession();
map.put("xx",xx);
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
HttpSession session=ServletActionContext.getRequest().getSession();
ActionContext ctx = ActionContext.getContext();
Map session=ctx.getSession();
session.put("xx", xx);
Map map=ServletActionContext.getContext.getSession();
map.put("xx",xx);
HttpServletRequest request = ctx.get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);
HttpServletResponse response = ctx.get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);
IOC方式:(即使用Struts2 Aware攔截器)
要使用IoC方式,我們首先要告訴IoC容器(Container)想取得某個對象的意願,通過實作相應的接口做到這點。
public class UserAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
private HttpServletRequest request;
private HttpServletResponse response;
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
public String execute() {
HttpSession session = request.getSession();
return SUCCESS;
}
}
頁面使用struts2标簽顯示資料3中方式:
1.
<s:property value="javaBean.property"/>(隻支援有set屬性的情況下)
2.
<s:property value="%{javaBean.property}"/>(隻支援有set屬性的情況下)
3.
<s:property value="#request.javaBean.property"/>(适用于request,session,必須加#)
(時間:<s:date name="javaBean.property" format="yyyy-MM-dd HH:mm:ss" />)
注:struts2标簽顯示需要加上request或session,除非javaBean在action有set,get屬性,而如果使用jstl則不需要加。