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

用这句话ActionContext.getContext().getSession().put("result",result),报错因为给出的方法是put(arg0,a... 用这句话 ActionContext.getContext().getSession().put("result",result),报错因为给出的方法是put(arg0, arg1)而且我也没有看到有setAttribue("","")的方法,是因为我有包没有导入吗?我只看到有一个put(object arg0,objetct arg1)这个方法 展开
 我来答
与人知识
2018-04-02 · TA获得超过746个赞
知道小有建树答主
回答量:150
采纳率:100%
帮助的人:31万
展开全部

很多初学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 相应的类库。

明月清风618
2012-04-11 · TA获得超过737个赞
知道小有建树答主
回答量:395
采纳率:100%
帮助的人:125万
展开全部
你上面的那句话分开写就是。
ActionContext ac = ActionContext.getContext();
Map session = ac.getSession();
session.put("result",result);
这样看你懂了吗,你取得的getSession()的类型是Map型的。所以只有put()方法。没有setAttribue();只有在jsp页面中取的时候才用到getAttribue("result"):同样的,application也是一样的。都是map类型的。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Java_Mr
2012-04-15 · TA获得超过216个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:102万
展开全部
struts2中的session是一个Map,这个map种保存的是session对象,如果你需要须取得session,需要实现,SessionAware接口,他有一个未实现的方法
action中声明,private Map session;
public void setSession(Map arg0) {
this.session = arg0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiayutian0000
2012-04-13 · TA获得超过175个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:130万
展开全部
之所以没有setAttribue这个方法是因为你使用的session不是原生的Httpservlet session而是struts自己封装过的一个Map类型的session
你可以使用这个得到原生的session对象
ServletActionContext.getRequest().getSession().setAttribute(arg0, arg1);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jwqayist
2012-04-11 · TA获得超过148个赞
知道小有建树答主
回答量:172
采纳率:100%
帮助的人:148万
展开全部
ServletActionContext.getRequest().getSession(),通过这种方法拿到session,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式