to sprsong:

我想你的问题不是用request或者session解决不了,而是
不希望在应用代码中到处传递request或者session对象,
对吗?

如果是这样,ThreadLocal类的确可以帮你解决这个问题,
因为在web环境中,一次客户请求(从服务器选择线程为
request服务,到服务结束)始终是在一个单线程中,也就是
说,如果你在处理请求的开始阶段(可以用filter)设置
某个对象(例如request,session),在后续处理中,始终都
可以访问到它.


我们的系统差不多都作完了,然后我想在每一次修改数据库时都纪录一下是谁何时如何修改哪个表的哪一条。因为有一个执行修改性sql语句的统一入口DataAccessAgent.writeDAO(String sql)和DataAccessAgent.writeDAO(String[] sql),因此我希望不用修改调用所有调用借口的bean,只在writeDAO里想个办法取得操作员id就省事了的。当然我所有的jsp也有一个统一入口,我可以在统一入口处先把Session里的operatorId放到class可以访问到的地方,这样修改两入口文件就可以让所有的功能支持数据库级别的日志。

我今天在坛子里学会了executeBatch() ,回去改了DataAccessAgent.writeDAO(String[] sql)就OK了。

嘻嘻,java,啊!…… 啊! …… 啊啊啊!

>我想你的问题不是用request或者session解决不了,而是
>不希望在应用代码中到处传递request或者session对象,
>对吗?


您说的太对了。我觉得在所有的类里include、传递和引用request或者session对象是非常浪费开发资源和服务器资源的。

To guty,

您说的filter真的很容易解决问题,因为filter 可以改变Requst,可以在它们之前得到想要的request中想要的值。

请问Servlet的filter与threadLocal有什么联系吗? 我指底层实现方面。谢谢!

我也想请教一个问题

我的Group对象对应的是group表
用ddl自动生成建表的脚本是:
create table group (...);

但是group是sql语句中的一个关键字,执行该脚本时会出错。
我怎么能通过脚本建立group表呢?

偏题了,不好意思。

create table "group" (...);
好像可以。