天天看点

struts2中action调用servletAPI方法及struts2标签显示方式

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

继续阅读