ActionContext的put()和get()

我想用struts2.0实现验证用户是否已经登录。首先:我在登录的Action中编写ActionContextctx=ActionContext.getContext()... 我想用struts2.0实现验证用户是否已经登录。
首先:我在登录的Action中编写
ActionContext ctx =ActionContext.getContext();
ctx.getSession().put("managerName", name);
然后在另一个Action中获取“managerName”的值来判断是否存在:
ActionContext ctx = ActionContext.getContext();
String username = (String)ctx.getSession().get("managerName");

但是出错了:
java.lang.ClassCastException: com.opensymphony.xwork2.ActionContext

请问怎么解决?难道我的方法用用错了。谢谢各位了!!
大家还有更好的方法实现这个“验证用户是否已经登录”的方法吗??我不需要用拦截器!
展开
 我来答
嘟爷他巴
2009-08-02 · TA获得超过267个赞
知道小有建树答主
回答量:119
采纳率:0%
帮助的人:178万
展开全部
第一用户登录信息一般不会保存在Session中(早前的网站是这么做的),因为目前的大部份的应用都是采用服务器集群,也就是靠堆机子,堆Tomcat,使用Session不利于单点登录。

常用的做法:
系统对每一个登录的用户生成一个唯一的Key,这个Key可能是32、64或96位的字符串,保存于Cookie中,而登录用户的信息则保存于服务器端的缓存中,Java的Web系统通常会用Membercached,用Key去从缓存中读出用户信息。

当前,楼主要在下一个 Action 中读到上一个 Action 中设的值,首先确定Struts2 是否Session是否已开启(这个相信不用我说了,网上一堆),再确定是否配置了 Action 链,否则下一个 Action 是无法读到上一个 Action 中的值的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式