之前在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