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") %>