最近遇到这么一个问题:前台按钮发送AJax请求到后台,后台是SSH框架。每点击一下按钮就发送一次请求。 点击数次(7次)过后,页面无ajax响应。 在排除前台因素之后,找
到后台代码。写一个Test类。
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
TestDao testDao = (TestDao)context.getBean("testDaoImpl");
for (int i = 0; i < 10; i++) {
TestDao testdao = (TestDao)context.getBean("testDaoImpl");
List<Test> test = testdao.getTestsByVehicleType(1);
System.out.println(i);
}
控制台输出到7也停止了。
网上也有个别帖子求助说"spring 调用bean次数的问题"。
其实罪魁祸首是
在DAO注入sessionFactory后,在DAO方法里面sessionFactory.openSession() 。
虽然spring声明式的事务会自动帮你commit,但是openSession()产生的session并不会由于commit而自动关闭,而你多次打开新的session,结果session过多造成这个假死的现象。
我的解决办法是DAO方法里改为
sessionFactory.getCurrentSession()。该方法产生的session会在commit的时候自动close()这点我们在hibernate的时候已经学过了;或者使用HibernateTemplate的方法。
不过在假如不是在B/S的情况下,即在Main测试getCurrentSession()是不成功的。 因为SessionFactory是注入进来的,getCurrentSession()不在事务范围之内。
分享到:
相关推荐
标题中的"Spring4.0.2Hibernate4.3Freemarker2.3.20.zip.zip"表明这个压缩包包含了三个关键的Java开发框架:Spring 4.0.2、Hibernate 4.3和Freemarker 2.3.20。这三者都是Java Web开发中的重要组件,下面将详细解释...
Spring MVC的核心组件包括DispatcherServlet、Controller、ViewResolver和ModelAndView等,它们协同工作,使得开发者能够灵活地处理请求和响应。 **Hibernate** 是一个强大的ORM框架,它简化了Java应用程序与数据库...
Spring 是一个轻量级的、开源的 Java 应用程序开发框架。它的核心功能主要包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect Oriented Programming, AOP)、模块化、可插拔、非侵入式的组件模型等,...
1. **Spring MVC**:Spring MVC是Spring框架的一个模块,主要用于处理Web应用中的请求和响应。它提供了模型-视图-控制器(MVC)架构模式,使得业务逻辑与表现层分离,提高了代码的可维护性和可测试性。在本项目中,...
本篇将详细讲解基于Spring Boot 开发的实验室信息管理系统后端的核心概念和技术,旨在提供一个学习与参考的平台,而非用于商业用途。 一、Spring Boot 概述 Spring Boot 是由Pivotal团队提供的全新框架,它简化了...
Spring MVC、MyBatis 和 FreeMarker 是三个在Java Web开发中广泛应用的技术框架,它们共同构建了一个高效、灵活的Web应用程序架构。以下是对这三个技术的详细解释: **Spring MVC** Spring MVC是Spring框架的一个...
4:Spring DAO:打开关闭数据库连接 5:Spring WEB:为基于WEB服务的应用程序提供上下文服务 6:Spring Context:向Spring框架提供上下文信息 7:Spring MVC:分离模型、视图、控制器、以便更容易定制 折构函数...
首先,**Spring框架** 是整个应用的基础,它提供了一个统一的依赖注入容器,可以管理各种组件(如DAO、Service等),并支持AOP(面向切面编程)来处理跨切面的关注点,如日志、事务管理等。Spring MVC是Spring框架的...
**问题九:通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?** - Dao接口通过`@Mapper`注解与映射文件关联。 - 方法不能重载,...
【JavaWeb网上购物商城】项目是一个使用Eclipse开发工具,基于MVC(Model-View-Controller)设计模式构建的电子商务应用程序。在这个项目中,我们将会深入探讨JavaWeb开发中的核心技术和概念。 首先,MVC模式是...
Spring 是一个轻量级的 Java 开发框架,提供了一整套企业级应用解决方案。Spring 框架的核心功能包括依赖注入、面向切面编程、事务管理等。 ### 16. Spring IOC (Inversion of Control) Spring 的 IOC 容器是其...
通过实例,可以学习如何使用fmt、sql、fn、c等标签来处理国际化、数据库操作、函数调用和条件循环。 4. **MVC模式**:许多实例可能采用了Model-View-Controller(MVC)架构,这是一种将业务逻辑、数据和用户界面...
SpringMVC 是 Spring 框架的一部分,它为开发者提供了一种强大的方式来组织和控制 Web 应用的请求和响应流程。MyBatis 是一个轻量级的持久层框架,它简化了 SQL 查询和结果映射,使得数据库操作更加便捷。 **...
在本系统中,Servlet接收请求,调用业务逻辑,JSP负责生成响应。 7. **JSTL(JavaServer Pages Standard Tag Library)**: JSTL简化了JSP页面的编程,提供了一系列预定义的标签,用于处理常见任务如循环、条件判断...
开发者可以在XML配置文件或注解中定义SQL映射,然后在Java代码中调用Mybatis提供的API执行这些SQL,实现对图书信息、用户信息等数据的增删改查操作。Mybatis的优势在于灵活性高,可以进行复杂的SQL操作,并且能够...
- **foreach 循环**:循环遍历集合或数组。 - **SQL 片段**:重用 SQL 代码块。 #### 六、高级映射案例 - **一对一查询**:基于关联查询的结果,将数据映射到 POJO。 - **一对多查询**:将多个关联查询的结果映射...
- **MVC模式**:模型(Model)负责业务逻辑,视图(View)负责展示,控制器(Controller)处理请求并调用模型更新视图。 - **数据访问层(DAO)**:处理数据库操作,与数据库进行交互。 - **业务逻辑层(Service...
1. **基础语法**:包括数据类型、变量、运算符、流程控制(如if-else,switch,for,while循环)以及方法定义和调用。 2. **类与对象**:面向对象编程是Java的核心,涉及到类的定义、对象的创建、封装、继承、多态...
4. **EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)**:EL简化了数据访问,而JSTL提供了一系列标准标签,如`<c:forEach>`循环、`<c:if>`条件判断,提高了代码可读性。 5. **MVC...