问题描述
hibernate:4.1.6spring:4.0.1 工程启动没错,进入getAllUser页面获得数据库用户信息时报如下错误: 严重: Servlet.service() for servlet springMVC threw exceptionorg.hibernate.HibernateException: No Session found for current threadat org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:106)at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:941)at com.mlf.web.controller.dao.UserDAO.getAllUser(UserDAO.java:27)at com.mlf.web.controller.service.UserManager.getAllUser(UserManager.java:28)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:262)at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)at $Proxy19.getAllUser(Unknown Source)at com.mlf.web.controller.UserController.getAllUser(UserController.java:36)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:690)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.springframework.orm.hibernate4.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:149)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1760)at java.lang.Thread.run(Thread.java:619)-----------------------------------------------------------------------------------------------------------------------------------------hibernate.cfg.test.xml(com.mlf.web.controller.hibernate) <?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <mapping class="com.mlf.web.controller.entity.User"/> </session-factory></hibernate-configuration> ----------------------------------------------------------------------------------------------------------------------------------------- applicationContext.xml(com.mlf.web.controller.spring) <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">]><beans><bean id="userDao" class="com.mlf.web.controller.dao.UserDAO"><property name="sessionFactory" ref="sessionFactory"></property></bean><bean id="userManagerBase" class="com.mlf.web.controller.service.UserManager"><property name="userDao" ref="userDao"></property></bean><bean id="userManager" parent="transactionBese"><property name="target" ref="userManagerBase"></property></bean></beans> ----------------------------------------------------------------------------------------------------------------------------------------- spring-annotation.xml(包:config) <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"><!-- 扫描包 --><context:component-scan base-package="com.mlf.web.controller"></context:component-scan><!-- 开启注解 --><mvc:annotation-driven/><!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean><bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean> --><!-- 静态资源访问 --><mvc:resources location="/img/" mapping="/img/**"/><mvc:resources location="/js/" mapping="/js/**"/><bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"></property><property name="suffix" value=".jsp"></property></bean><!-- 配置文件上传解析器 --><bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="defaultEncoding" value="utf-8"/><!-- 文件最大值 --><property name="maxUploadSize" value="10485760000"/><!-- 缓存大小 --><property name="maxInMemorySize" value="40960"/></bean></beans> ----------------------------------------------------------------------------------------------------------------------------------------- spring-core.xml(包:config) <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">]><beans><import resource="classpath:com/mlf/web/controller/spring/applicationContext.xml"/></beans> ----------------------------------------------------------------------------------------------------------------------------------------- spring-hibernate.xml(包:config) <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [<!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">]><beans><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncodeing=utf-8"></property><property name="username" value="root"></property><property name="password" value="donny2014"></property></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop><!-- 自动更新 --><prop key="hibernate.hbm2ddl.auto">update</prop><!-- 在控制台打印SQL语句 --><prop key="hibernate.show_sql">true</prop><!-- 将SQL脚本进行格式化后再输出 --><prop key="hibernate.format_sql">true</prop></props></property><property name="configLocations"><list><value>classpath:com/mlf/web/controller/hibernate/hibernate.cfg.test.xml</value></list></property></bean><bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"></property></bean><!-- 配置事务 --><bean id="transactionBese" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true"><property name="transactionManager" ref="transactionManager"></property><property name="transactionAttributes"><props><prop key="add*">PROPAGATION_REQUIRED,-Exception</prop><prop key="update*">PROPAGATION_REQUIRED,-Exception</prop><prop key="insert*">PROPAGATION_REQUIRED,-Exception</prop><prop key="modify*">PROPAGATION_REQUIRED,-Exception</prop><prop key="delete*">PROPAGATION_REQUIRED,-Exception</prop><prop key="get*">PROPAGATION_NEVER</prop></props></property></bean></beans> ----------------------------------------------------------------------------------------------------------------------------------------- UserController.java(包:com.mlf.web.controller) package com.mlf.web.controller;import java.util.List;import javax.annotation.Resource;import javax.servlet.http.HttpServletRequest;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.mlf.web.controller.entity.User;import com.mlf.web.controller.service.IUserManager;@Controller@RequestMapping("/user")public class UserController {@Resource(name="userManager")private IUserManager userManager;@RequestMapping("/toAddUser")public String toAddUser(){return "/addUser";}@RequestMapping("/addUser")public String addUser(User user){userManager.addUser(user);return "/success";}@RequestMapping("/getAllUser")public String getAllUser(HttpServletRequest request){List<User> user = userManager.getAllUser();request.setAttribute("user", user);return "/userManager";}}
解决方案
没发userDao啊在getAllUser方法上加Transactional注解如果没有事务,刚开始的线程上下文是拿不到session的
解决方案二:
把WEB XML发上来看看呗