struts2中我想把结果放入到session中ActionContext.getContext().getSession()

用这句话 ActionContext.getContext().getSession().put("result",result),报错因为给出的方法是put(arg0, arg1)而且我也没有看到有setAttribue("","")的方法,是因为我有包没有导入吗?我只看到有一个put(object arg0,objetct arg1)这个方法

很多初学Java Web的同学因为使用 Strut2框架而分不清两个 Session的区别。

1.   JSP/Servlety有个原生的 session 对象,这是9大内置对象中的一个,书上写的都有,都记得。类型是 HttpSession session;  函数方法是 setAttribute(),getAttribute(),用法如下

// java
// 保存到 原生session
ServletActionContext.getRequest().getSession().setAttribute("myStr",myStr);
// jsp
用struts标签: <s:property value="#session.myStr" />
用EL表达式:${sessionScope.myStr}
用JSP代码:<%=session.getAttribute("myStr")%>

2.  若是项目使用了Struts2框架,Struts2自己也封装了个 session,这个 session是个 Map类型的对象。所以和 Map 用法一样的,使用 put 存值,get 取值。用法是:

// java 
// 保存到struts2 session
ActionContext.getContext().getSession().put("user", user);
// jsp 
用struts标签: <s:property value="#session.user" />
用EL表达式:${hello}
用JSP代码:<%=session.getAttribute("user")%>

在项目中,如果使用了 Struts2 框架,最好 Java 和 JSP 文件中都保持使用 Struts2 的 Session,因为原生 session 在一些不是用户调起的Action中可能无法正常获取值(因为原生Session依赖request请求,如Action之间跳转可能就没有request请求),而Struts2 Session则没有这个问题。

这个问题,可在Action内 使用 Stust2 Session 保存一个变量,紧跟着,使用原生的 

ServletActionContext.getRequest().getSession().getAttribute 就无法获取到值。

如果有误,欢迎指出 。

使用上面的代码,注意import 相应的类库。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-11
你上面的那句话分开写就是。
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.put("result",result);
这样看你懂了吗,你取得的getSession()的类型是Map型的。所以只有put()方法。没有setAttribue();只有在jsp页面中取的时候才用到getAttribue("result"):同样的,application也是一样的。都是map类型的。本回答被提问者和网友采纳
第2个回答  2012-04-15
struts2中的session是一个Map,这个map种保存的是session对象,如果你需要须取得session,需要实现,SessionAware接口,他有一个未实现的方法
action中声明,private Map session;
public void setSession(Map arg0) {
this.session = arg0;
}
第3个回答  2012-04-13
之所以没有setAttribue这个方法是因为你使用的session不是原生的Httpservlet session而是struts自己封装过的一个Map类型的session
你可以使用这个得到原生的session对象
ServletActionContext.getRequest().getSession().setAttribute(arg0, arg1);
第4个回答  2012-04-11
ServletActionContext.getRequest().getSession(),通过这种方法拿到session,
相似回答