Struts2获取Session的三种方式

1、Map<String,Object> session =  ActionContext.getContext().getSession();

  session.put("codeTextFromSys", checkCode.getCodeText());

  String codeTextFromSys = session.get("codeTextFromSys");

2、HttpSession session = ServletActionContext.getRequest().getSession();

  session.setAttribute("codeTextFromSys", checkCode.getCodeText());

  String codeTextFromSys = (String)session.getAttribute("codeTextFromSys");

3、让Action实现SessionAware接口,并实现public void setSession(Map<String, Object> session) {} 方法,Struts2会在实例化Action后调用该方法,通过方法参数将Session对象注入进来。如果我们想获取Session,我们可以定义成员变量,接收注入进来的Session对象。(推荐)

  public class PictureCheckCode extends ActionSupport implements SessionAware {

private Map<String, Object> session;

public Map<String, Object> getSession() {
return session;
}

public void setSession(Map<String, Object> session) {
this.session = session;
}

}


三种方式的比较:

  返回类型的对比:

      1,3获取的Session类型是Map<String,Object>类型,2获取的类型是HttpSession。

  获取方式对比:

      1,2是我们主动获取Session,3是采用注入的方式自动注入Session,这是被动的。

      推荐使用3来创建Session,因为它更为灵活而且符合面向接口编程的思想。

补充:jsp页面获取Session的值

     在jsp上内置就有session对象,可以直接用。

     例如:<%=session.getAttribute("hello") %>