之前在Servlet中有兩種傳值方式:java
第一種:經過獲得當前的Request對象,經過request.setAttribute(key,value)將值綁定到request中,經過轉發,就能在不一樣的Servlet或JSP中經過request.getAttribute(key)進行取值。apache
第二種:經過當前的request.getSession().setAttribute(key,value)將值綁定到當前會話中,只要會話存在,就是在任何的Servlet或jSP中經過request.getSession.getAttribute(key)取到值。session
如今在Struts2中的傳值方式:框架
第一種:經過實現org.apache.struts2.interceptor.ServletRequestAware這個接口,重寫它的setServletRequest(HttpServletRequest request)方法獲得Request。獲得request後傳值方式與上面的第一種方式同樣。code
第二種:經過對象
<!-- lang: java --> ActionContext contx= ServletActionContext.getContext(); Map<String,Object> map=contx.getSession();
獲得一個Map,把值放用key,value形式放入Map中,至關於session.setAttribute(key,value)同樣。繼承
第三種:經過 ActionContext contx= ServletActionContext.getContext(); 獲得一個Struts2獨有的ActionContext,這是Struts2的上下文對象,只要是在Struts這個框架中均可以獲得,其功能相似於在多個頁面進行轉發的Request,也就是說多個JSP共享的同一個Request,用contx.put(key,value)這個方式對Struts2上下文進行賦值,在其餘的Action中只要獲得ActionContext 對象,用get(key)就能夠取值。接口
說明:ServletActionContext是繼承了ActionContext的子類, ActionContext contx= ServletActionContext.getContext(); 也能夠是ActionContext contx=ActionContext.getContext();.get