2
回答
请问Jfinal中的controller共享变量吗?

我在controller中声明一个变量

Boolean isLogin = false;

请问isLogin是共享的变量吗?

@jfinal

举报
DevidGe
发帖于4年前 2回/163阅

以下是问题补充:

  • @DevidGe :多用户同时访问系统会共享这个变量吗。我看了一下Controller源码,里面有 private String urlPara; private String[] urlParaArray; 等等,这样的话应该是不共享的吧? (4年前)
共有2个答案 最后回答: 4年前

我不理解你的共享什么意思。但我猜测你想实现一个功能是保存登陆状态。

如果是这样的话,我想你需要采用Session来保存用户的一些数据,比如登陆凭证等。

JFinal具体我没研究,但每个Controller应该是个单例,这就意味着当前上下文里只有一个特定的Controller实例存在,如果其中一个线程给某个Controller实例赋值,没有清除掉,其他线程应该能够拿到这个值。

不知道我理解对了没有,欢迎拍砖!

--- 共有 1 条评论 ---
泷泽我看了一下源码,追踪了一下请求的过程,可以找到这样一行代码: Controller controller = action.getControllerClass().newInstance(); 具体位置是ActionHandler的handle方法,可见是为每个请求创建单独的对象,可以避免线程安全问题 4年前 回复
顶部