今天做个分页的模块。运行,点击分页的上页,下页,点了2次就出现问题了。代码没有报错误。反映是点击后页面不动。以前做jsf+hibernate+spring的时候也出现这个问题,原先是没有在web.xml中加有关打开hibernate的session的配置,如下:
<filter>
<filter-name>OSIVFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OSIVFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
现在做的是用struts+hibernate+spring做的,这个配置也写了。后来发现是我的底层代码写的问题,我执行查询的时候用了从新打开一个session的来执行查询(Session session = getSessionFactory().openSession();),而且还没有关闭。查询多了就 session就出问题了。应该用this.getSession().createSQLQuery(sSql)来执行查询,它会自动关闭session。
action中HttpSession session = request.getSession(false);要记得用false,目的:是以前有的话就不重新建session,用以前的。