获取Session的方式:
1、ActionContext
ActionContext.getContext().getSession() 返回类型为Map<String,Object>
2、ServletActionContext
ServletActionContext.getRequest().getSession() 返回类型为HttpSession
3、SessionAware
让Action实现SessionAware接口
实现void setSession(Map<String,Object> session)方法,Struts2会在实例化Action后调用该方法,通过方法参数将Session对象注入进来
定义成员变量,接受注入进来的Session对象。
各种方式的对比
返回类型对比:
第1、3种方式,获取的session是Map<String,Object>类型的,Struts2采用该类型的目的是简化Session对象,而Session的存储结构和Map是一致的。
第2种方式,获取的session是HttpSession,为了保持兼容性,Struts2提供了获取该类型的方式。
获取方式对比:
第1/2种方式,使我们主动的获取Session。
第3种方式,是采用注入的方式自动注入Session,这种方式是被动的。
推荐使用第3种方式:
采用注入思想,更为灵活。
面向接口编程,符合主流规范。