ActionContext的put()和get()

来源:百度知道 编辑:UC知道 时间:2024/07/04 15:34:39
我想用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

请问怎么解决?难道我的方法用用错了。谢谢各位了!!
大家还有更好的方法实现这个“验证用户是否已经登录”的方法吗??我不需要用拦截器!

第一用户登录信息一般不会保存在Session中(早前的网站是这么做的),因为目前的大部份的应用都是采用服务器集群,也就是靠堆机子,堆Tomcat,使用Session不利于单点登录。

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

当前,楼主要在下一个 Action 中读到上一个 Action 中设的值,首先确定Struts2 是否Session是否已开启(这个相信不用我说了,网上一堆),再确定是否配置了 Action 链,否则下一个 Action 是无法读到上一个 Action 中的值的。