关于如何在普通类中持有request和response对象

gtolin 发布于 2014/02/16 10:33
阅读 2K+
收藏 0

@JFinal 你好,想跟你请教个问题:

在普通类中如何持有request和response对象?

目前JFinal中Controller里能获取到request和response对象,但在其他类中如何持有?从而构建一个上下文如HttpContext方便使用

加载中
1
Shazi199
Shazi199

request和response本身就是针对某一次请求的,当然不能当做static对象来使用。应用的共享数据只需要自己写个共享类就可以了。当然,你要自己保证这个共享类的同步。

0
marker
marker
你可以去了解ThreadLocal类
0
g
gtolin

这是我第N次听到使用ThreadLocal来解决这个问题了。

实际开始我也按这个思路去尝试解决,经过查资料发现,ThreadLocal不是用来解决共享对象的多线程访问问题,反而是保证各线程能够保持各自独立的一个对象。经过代码实践,也证明了这一点。(难倒代码写错了?)

其实我提的普通类中持有Request和Response,目的是变成一个共享对象,有点类似用Static声明的。

不知哪位高手能指点一下?

0
JFinal
JFinal

引用来自“gtolin”的答案

这是我第N次听到使用ThreadLocal来解决这个问题了。

实际开始我也按这个思路去尝试解决,经过查资料发现,ThreadLocal不是用来解决共享对象的多线程访问问题,反而是保证各线程能够保持各自独立的一个对象。经过代码实践,也证明了这一点。(难倒代码写错了?)

其实我提的普通类中持有Request和Response,目的是变成一个共享对象,有点类似用Static声明的。

不知哪位高手能指点一下?

    Request Response 对象在每次请求时会生成新的对象,也只能在一次请求/响应这个周期内使用,不能变成共享对象。要想在普通类中持有该对象,也能是在请求/响应这个周期之类,用ThreadLocal 比较合适
返回顶部
顶部