在使用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则不需要加。