日期:2014-05-20  浏览次数:20531 次

关于spring+hibernate+struts的问题
各位:
  是这样的!spring+hibernate+struts的时候,每次调用service中的类全都是在action中调用,然后运用session.setAttribute,之后在jsp中取出session中的值。现在是这样的,我点击某个链接,会马上显示该页面,在该页面中显示车辆最近的状态信息,而车辆的状态信息在数据库中是时时刻刻都在变的,所以我不能一开始就把信息放到session中,在显示该页面的时候读出session中的值,这样的话,读出来的值肯定是已经过期了的,不是最新的。以前只用hibernate+struts的时候,可以在jsp中插入java代码,也就是说直接在jsp中调用数据库dao,查出此时的车辆状态信息,那么这个信息肯定是数据库最新的,而现在用spring+hibernate+struts的时候,就不能直接在jsp中调用service或dao中的类进行数据库查询了,那请问一下大家,这种情况怎么办呀

------解决方案--------------------
第一个建议, 不要把信息放到 session 中, 会让你服务器崩的, 你可以放到 request中, request.setAttribute
第二, 其实你通过 jsp 查询数据库的内容,和你通过 ssh 查询数据库的内容都是一样的, 如果 ssh 的时候不能保证时效性, jsp 的方式也不可能保证
------解决方案--------------------
探讨
我的意思是说,我在点击某个链接的时候,会出来一个页面,这个页面中的内容,是现在数据库中的内容,我应该通过什么方式得到呀?
因为我是点击链接,所以不可能action,那我现在的查询数据库应该在哪里进行呢?也就是说查询数据库的这个过程应该放到什么地方

------解决方案--------------------
.....当你带点链接的时候,访问一个ACTION,查询数据库,然后返回到一个弹出的页面显示信息,SSH都是这样做的啊。
你每次点击链接的时候,都访问ACTION,所以数据是最新的。
------解决方案--------------------
lz啊,你这样的方式不是很好啊,首先,不要在jsp页面写java代码,维护不方便的。
其次,你应该点击按钮或者图片之类的连接的时候,要弹出行页面的话,可以用openWindow来写,这样你可以传递url参数什么的,就可以在新窗口进行查询数据库得到最新的数据了。

最后,按照你现在的说法你只点连接跳转到新的页面的时候,只想是在新页面的的<body>里写上onboard来调用一个js,而在js里就要写你进入action去实现查询数据库的方法,这个时候你查询出来的就是最新的(一楼说的那2点建议很对)
------解决方案--------------------
用spring+hibernate+struts的时候,為什么不能直接在jsp中调用service或dao中的类进行数据库查询,spring是面向接口的,持久层用hibernate写dao,用spring管理,在struts的Action中,把接口載入,调用返回数据的接口,再设到request中,这逻辑不对么?