论坛首页 Java企业应用论坛

session错误使用的问题(二)

浏览 1721 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-08   最后修改:2011-11-08
     最近跟session较上了,前一篇帖子内容少,但提到了第二种情况,很多人在项目中都出现了,来自于真实情景。http://www.iteye.com/topic/1117443
    现在在写一个关于session在实际开发中的问题

情景如下:在代码发现需要取用户数据,这部分登录数据放到session里面,但是代码的逻辑却出现问题,

在代码中

HttpSession session = getRequest().getSession(false);
RbacUser user = (RbacUser) session.getAttribute(Constants.User.LOGIN_USER);

if(user!=null){
//取出user的id
}
//使用到对id进行一些列操作



代码有什么问题?
1.sessin不一定存在,使用前没有进行判断,自己测试时候容易忽略,作为登录用户来测试,一切完好。
2.根据判断session里面有信息取出id,但是如果没有user这个对象呢?这个时候已经出错了,为什么这个逻辑不处理?然后你定义一个全局页面,返回到要处理这个全局页


这个是常见问题,如果逻辑完整,当然没有问题,只是点逻辑上不是很好罢了!不是想探讨的

       早期如果规划好路径,进行相应路径调用这个方法时候,已经aop拦截保证了相关权限用户才能进行调用,那么为什么要写这些逻辑对代码进行污染?进行编码的程序员能很爽的使用session,也知道这个user对象必定存在,不需要进行那么判断,不需要在里面决定同一返回哪些页面,这个代码逻辑也清晰,一些冗余的代码不是也抽离出来了吗?

     session这样处理感觉没问题,可存在疑惑的是项目中有很多判断,比如页面传递过来的产品id取产品数据,那么这个时候代码习惯性加上了if判断,但是产品id不存在又没有操作,这样子的逻辑又改怎么办?是逻辑不完整,加上else然后给个页面?还是怎么



   发表时间:2011-11-08  
悲剧了 写道
     最近跟session较上了,前一篇帖子内容少,但很多人在项目中都出现了提到了第二种情况,来自于真实情景。http://www.iteye.com/topic/1117443
    现在在写一个关于session在实际开发中的问题

情景如下:在代码发现需要取用户数据,这部分登录数据放到session里面,但是代码的逻辑却出现问题,

在代码中

HttpSession session = getRequest().getSession(false);
RbacUser user = (RbacUser) session.getAttribute(Constants.User.LOGIN_USER);

if(user!=null){
//取出user的id
}
//使用到对id进行一些列操作



代码有什么问题?
1.sessin不一定存在,使用前没有进行判断,自己测试时候容易忽略,作为登录用户来测试,一切完好。
2.根据判断session里面有信息取出id,但是如果没有user这个对象呢?这个时候已经出错了,为什么这个逻辑不处理?然后你定义一个全局页面,返回到要处理这个全局页


这个是常见问题,如果逻辑完整,当然没有问题,只是点逻辑上不是很好罢了!不是想说的重点

      早期如果规划好路径,进行相应路径调用这个方法时候,已经aop拦截保证了相关权限用户才能进行调用,那么为什么要写这些逻辑对代码进行污染?进行编码的程序员能很爽的使用session,也知道这个user对象必定存在,不需要进行那么判断,不需要在里面决定同一返回哪些页面,这个代码逻辑也清晰,一些冗余的代码不是也抽离出来了吗?




0 请登录后投票
   发表时间:2011-11-08  
我一般的做法是,业务逻辑不直接从HTTP SESSION中取值,而是使用一个带有ThreadLocal的类,设置一个过滤器,每一次请求都将session中的值设置到那个ThreadLocal中
0 请登录后投票
   发表时间:2011-11-08  
这个是代码写的有问题吧...
还要看架构规定
有些架构里面  直接保证 登录用户对象 百分百存在
0 请登录后投票
论坛首页 Java企业应用版

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