毫无疑问,把sql直接写到jsp中是一种愚蠢的做法,绝对不要这样做,否则在后期的系统
维护中你会吃尽苦头的!
我给你的例子只是一个sessionbean的接口,而这和entitybean是不同的。
请注意:sessionbean专注的是业务,而不是数据库。而entitybean则是专管数据库的。
一般来说,不要在sessionbean中直接访问数据库,在entitybean中也无须考虑太多的业务
逻辑。
至于finder方法,对于常用的(如查某一个topic下的所有message)可以专门写finder方法,
而对于一些所谓的模糊查找,可以写一个通用的查询方法。如何写,传什么参数,由你自己
来定。比如可以传递where子句,或者自己构造一个过滤器,在finder方法中重新还原构造
成sql语句。
一般来说,各个层次进行的操作:
以本bbs操作为例,进行list,post
entitybean:只需要处理如topic,message等表的insert, update, select操作,至于流通的
数据是干什么的,则无须关心。
sessionbean:它的任务是处理业务,考虑这样两个方法
ForumSession.post(String title, String body, User createdUser)
ForumSession.reply(long topicID, String body, User createdUser)
分别用于完成post和reply的操作,在方法内部,访问对应于topic和message表的entitybean,
在这里可能会根据需要(有一些固定的业务规则)对一些数据进行判断,取舍。
当然,我给出的这两个方法的声明只是一个很简单的例子,你可以根据自己的情况进行扩充。
甚至再构造一些公用的Message, Topic的helper类。
在servlet中,负责将表单中来的数据分析,转换,过滤,并调用sessionbean中的方法来
完成操作,再构造一些类(这时就可以用到上面说到一些Helper类啦),以供jsp显示之用。
jsp中嘛,当然是做显示用的啦。
这其实就是典型的MVC模式。当然如果你不希望这么讲究的话,也可以将servlet和jsp合并,
事实上很多使用jsp的人都是这么干的。包括我以前的项目,我似乎并不喜欢使用servlet。
但是经验也告诉我,尽可能的将java代码从jsp中分离出来是一个很好的主意,对程序的可
维护性非常有帮助。
就说这么多了,希望你明白。