论坛首页 Java企业应用论坛

关于几个遇到的问题讨论

浏览 7142 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-05-24  
1.自己在学习webwork的时候,会用到拦截器来为我对用户身份进行判断,判断是否有权限,是否登录等问题,同时我也在拦截器中学习把错误信息


ActionSupport action = (ActionSupport) invocation.getAction();
action.addActionError("你还没有登录呢");


想请教的就是这个错误信息的获得我们需要通过什么方式来获得并显示在页面上,这好像与普通的在action中的错误信息不同,想请教下有类似经历的人

2.拦截器的作用非常强大,所以我们在许多方面会用到,比如现在我们在配置文件中配置好 session的全局时效,这时候我的想法是能否在 session失效的那一刻触发相应的动作或者action 社区内有人也有类似的想法吗 借鉴下 
   发表时间:2007-05-24  
kyvin 写道
1.自己在学习webwork的时候,会用到拦截器来为我对用户身份进行判断,判断是否有权限,是否登录等问题,同时我也在拦截器中学习把错误信息


ActionSupport action = (ActionSupport) invocation.getAction();
action.addActionError("你还没有登录呢");


想请教的就是这个错误信息的获得我们需要通过什么方式来获得并显示在页面上,这好像与普通的在action中的错误信息不同,想请教下有类似经历的人

2.拦截器的作用非常强大,所以我们在许多方面会用到,比如现在我们在配置文件中配置好 session的全局时效,这时候我的想法是能否在 session失效的那一刻触发相应的动作或者action 社区内有人也有类似的想法吗 借鉴下 


回答问题:

1、如果你在页面中使用JSP,可以这样:<ww:actionerror/>;如果FreeMarker模板,可以这样<@ww.actionerror/>;如果Velocity模板,可以这样#wwactionerror。我觉得和Action中的addActionError没有什么不同,实质都是一样的
2、也是可以的,Interceptor只是Action级别的AOP

Object someValueInSesssion = ActionContext.getContext().getSession().get("someKey") 
if(someValueInSesssion == null) {
    // TODO:触发你的动作,如下
    ((ActionSupport) invocation.getAction()).addActionError("会话超时,请重新登录");
    return Action.Login;
}

0 请登录后投票
   发表时间:2007-05-24  
谢谢你的解答 第1个问题 算帮我解决了 只是第2个问题 可能我有点没说清楚 你这样的处理 与用户登录的拦截器效果一样 我已经有做好这些 我现在是想判断 web.xml中配置的session时效 失效后能否触发动作 当然此时的可能是针对全部数据库做查询 而并不是针对当前会话中的操作 想过用线程来做 但是觉得是否还弄复杂了 谢谢你的解答
0 请登录后投票
   发表时间:2007-05-24  
能否说出你的应用场景?
我想是能够触发动作的,但可能与安全认证有些关系,如果不考虑这些,而且匿名的用户有权限执行数据库查询,应该是有问题的

但是我不明白为什么要这么做,应用场景??
0 请登录后投票
   发表时间:2007-05-24  
我的想法是这样的,比如我现在利用一个数据库中的字段来控制用户的在线与不在线,但用户登录时update这个字段,而当用户注销时也是update这个字段,这样正常操作没问题 ,可是当 session 时效失去后,用户再次登录时,肯定那个字段还未update 所以我是想有没有法子对session进行操作 达到我上述的效果
0 请登录后投票
   发表时间:2007-05-25  
HttpSessionListener
0 请登录后投票
   发表时间:2007-05-25  
dennis_zane 写道
HttpSessionListener


这位朋友说的很对,也许HttpSessionListener能够解决你的问题,但是这种解决方案可能会对分布式处理有些问题
0 请登录后投票
   发表时间:2007-05-25  
能详细点吗 在webwork中 我对这个对象用的很少 似乎处理这种事情还真的需要用个坚挺器或者线程来处理
0 请登录后投票
   发表时间:2007-05-31  
kyvin 写道
我的想法是这样的,比如我现在利用一个数据库中的字段来控制用户的在线与不在线,但用户登录时update这个字段,而当用户注销时也是update这个字段,这样正常操作没问题 ,可是当 session 时效失去后,用户再次登录时,肯定那个字段还未update 所以我是想有没有法子对session进行操作 达到我上述的效果


HttpSessionListener不是webwork中的对象,可以查一下.
不过我想你的这种想法好像即使用HttpSessionListener也实现不了,因为如果用户登录后,又重新开一个浏览器去再次登录的话,前次登录的信息还在.这样就需要先保证单用户登录,不知道是不是我想得复杂了.
0 请登录后投票
   发表时间:2007-05-31  
对啊 我现在的处理方式交给了javascript 因为真的难做到那一点 至于单用户登录我已经做好了 只是一直扩展不了 拦截器来实现 似乎可以在destory方法中来做 
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics