看你怎么理解了,更规范一点就是按你说的做:在上面的DisplayAllAction中调用AddressBookBean.search()方法,再将查询
结果保存在一个DTO中,存入Session,但保存在session中应该不太好

解决方案 »

  1.   

    谢谢,请问AlexSunny(handsomealex) ,保存在Session中有些什么不好的地方呢?
    是不是数据量太大?
      

  2.   

    保存在session中如果没有及时释放,多次的执行查询,会有什么后果?保存在session中必须要记得释放。所以一般会保存在DTO中,用一个数据传输对象会比较科学一点罢了
      

  3.   

    调用到sevlet的处理,应该算是MVC吧
      

  4.   

    个人认为保存到session中应该是覆盖上次的结果,不会有大问题.而版主的问题在于你的理解,AddressBookBean.search(strSql) 没有做程序或者是业务方面的control, 仅仅是从JavaBean 里面读数据而已. 如果是调用AddressBookBean.getXXX()在getXXX()里面再调用search()  或许你就不这么认为了,但实际上没什么区别.
      

  5.   

    如果数据量比较大,比如是个SQL语句查出的数据表,放在Session中不会有问题吧?
      

  6.   

    Session中有容量限制吗?
    是不是会太慢啊?
      

  7.   

    我觉得楼主提到的例子有违MVC初衷,使用mvc就是为了把显示和业务处理分层次处理。绝对应该按楼主的想法做。例子中在action中准备了一个sql语句,而在jsp页面中调用业务层bean区查询。这样的用法我觉得有点可笑。既然在jsp中使用业务层bean,为什么在action中构造sql语句?难道jsp中不能够造sql语句?既然这样做还为什么使用struts?只是为了使用而使用?
      

  8.   

    至于保存数据,我觉得应该保存在request中,因为session会在会话范围内占用内存,而request在一次请求中保存数据。除非想缓存数据。
      

  9.   

    更进一步的,我觉得应该在业务层中构造这个sql语句,而不应该在action中构造。业务层中只需要有一个类似于getAll的方法就行了。
      

  10.   

    非常感谢 kwc_cn() 的回答,现在有个疑问是:就算在request中保存数据,那一次SQL中可能有大量的查询结果,
    会存在保存数据太大的问题吗?会不会严重影响访问速度?谢谢!