开发者社区> 问答> 正文

spring mvc的openinview不起作用

最近在项目中使用spring mvc+hibernate做框架,但是在web.xml中使用spring的openinview不起作用!不知道有没有人遇到过这样情况?求大神解决!

PS.观察DEBUG信息,在请求的时候确实通过OpenSessionInViewFilter中开启了一个Session,但是到DAO层hibernate又开一个Session。

展开
收起
a123456678 2016-03-16 10:06:26 2330 0
1 条回答
写回答
取消 提交回答
  • 以下是配置文件:
    web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
      <error-page>
        <error-code>401</error-code>
        <location>/error.jsp</location>
      </error-page>
      <error-page>
        <error-code>403</error-code>
        <location>/error.jsp</location>
      </error-page>
      <error-page>
        <error-code>500</error-code>
        <location>/error.jsp</location>
      </error-page>
       
      <context-param>
        <param-name>
            contextConfigLocation
        </param-name>
        <param-value>
            /WEB-INF/classes/spring-servlet.xml
        </param-value>
      </context-param>
      <!-- 将EntityManager的范围扩大到view层 -->
      <filter>
        <filter-name>openSessionInView</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
        <init-param>
            <param-name>singleSession</param-name>
            <param-value>true</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>openSessionInView</filter-name>
        <url-pattern>*.do</url-pattern>
        <url-pattern>*.json</url-pattern>
      </filter-mapping>
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/classes/spring-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.do</url-pattern>
        <url-pattern>*.json</url-pattern>
      </servlet-mapping>
    </web-app><span></span>   
    ?
    
    spring配置文件
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
     xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:p="http://www.springframework.org/schema/p"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:mvc="http://www.springframework.org/schema/mvc"
     xmlns:tx="http://www.springframework.org/schema/tx"
     xmlns:aop="http://www.springframework.org/schema/aop"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
      
     <context:annotation-config /> 
     <context:component-scan base-package="com.gswtek.mawjaw.controller" />
      
     <mvc:interceptors>
     <mvc:interceptor>
     <mvc:mapping path="/**/listAll*.do" />
     <bean class="com.gswtek.mawjaw.filter.DispatcherInterceptor" />
     </mvc:interceptor>
     </mvc:interceptors>
      
     <!-- JSP视图 -->
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
     <property name="prefix">
     <value>/WEB-INF/jsp/</value>
     </property>
     <property name="suffix">
     <value>.jsp</value>
     </property>
     </bean>
      
     <!-- JSON试图 -->
     <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
     <property name="mediaTypes">
     <map>
     <entry key="json" value="application/json" />
     </map>
     </property>
     <property name="defaultViews">
     <list>
     <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
     </list>
     </property>
     </bean>
      
     <!-- 上传文件 -->
     <bean id="multipartResolver"
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
     <property name="maxUploadSize" value="1000000" />
     <property name="defaultEncoding" value="utf-8" />
     </bean>
     
     
     <bean id="dataSource"
     class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
     <property name="driverClass" value="${jdbc.driverClassName}" />
     <property name="jdbcUrl" value="${jdbc.url}" />
     <property name="user" value="${jdbc.username}" />
     <property name="password" value="${jdbc.password}" />
     <property name="minPoolSize" value="${jdbc.minPoolSize}" />
     <property name="maxPoolSize" value="${jdbc.maxPoolSize}" />
     <property name="initialPoolSize" value="${jdbc.initialPoolSize}" />
     <property name="maxIdleTime" value="${jdbc.maxIdleTime}" />
     <property name="acquireIncrement" value="${jdbc.acquireIncrement}" />
     <property name="acquireRetryAttempts" value="${jdbc.acquireRetryAttempts}" />
     <property name="acquireRetryDelay" value="${jdbc.acquireRetryDelay}" />
     <property name="testConnectionOnCheckin" value="${jdbc.testConnectionOnCheckin}" />
     <property name="automaticTestTable" value="${jdbc.automaticTestTable}" />
     <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}" />
     <property name="checkoutTimeout" value="${jdbc.checkoutTimeout}" />
     </bean>
     <bean id="propertyConfigurer"
     class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="location" value="classpath:jdbc.properties" />
     </bean>
     <bean id="sessionFactory"
     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
     <property name="dataSource">
     <ref bean="dataSource" />
     </property>
     <property name="hibernateProperties">
     <props>
     <!-- SQL方言 -->
     <prop key="hibernate.dialect">
     org.hibernate.dialect.MySQLDialect
     </prop>
     <!-- 输出SQL语句 -->
     <prop key="hibernate.show_sql">true</prop>
     <!-- 格式化SQL语句 -->
     <prop key="hibernate.format_sql">false</prop>
     <!-- 更新表结构 -->
     <prop key="hibernate.hbm2ddl.auto">update</prop>
     <!-- 缓存实现类 -->
     <prop key="hibernate.cache.provider_class">
     org.hibernate.cache.EhCacheProvider
     </prop>
     <!-- 使用查询缓存 -->
     <prop key="hibernate.cache.use_query_cache">true</prop>
     </props>
     </property>
     <property name="mappingResources">
     <list>
     <value>com/gswtek/mawjaw/bean/User.hbm.xml</value>
     <value>com/gswtek/mawjaw/bean/Writer.hbm.xml</value>
     <value>com/gswtek/mawjaw/bean/Illustrator.hbm.xml</value>
     <value>com/gswtek/mawjaw/bean/IlluImage.hbm.xml</value>
     <value>com/gswtek/mawjaw/bean/Tvfilm.hbm.xml</value></list>
     </property>
     </bean>
     <!-- Hibernate事务管理器 -->
     <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory">
     <ref bean="sessionFactory"/>
     </property>
     </bean>
     <!-- 事务传播特性 -->
     <tx:advice id="txAdvice" transaction-manager="transactionManager">
     <tx:attributes>
     <tx:method name="*" propagation="REQUIRED"/>
     </tx:attributes>
     </tx:advice>
     <!-- 配置事务 -->
     <aop:config>
     <aop:pointcut expression="execution(* com.gswtek.mawjaw.service.*.*(..))" id="allServiceMethod"/>
     <aop:advisor advice-ref="txAdvice" pointcut-ref="allServiceMethod"/>
     </aop:config>
     <bean id="UserDAO" class="com.gswtek.mawjaw.dao.UserDAO">
     <property name="sessionFactory">
     <ref bean="sessionFactory" />
     </property>
     </bean>
     <bean id="WriterDAO" class="com.gswtek.mawjaw.dao.WriterDAO">
     <property name="sessionFactory">
     <ref bean="sessionFactory" />
     </property>
     </bean>
     <bean id="IllustratorDAO"
     class="com.gswtek.mawjaw.dao.IllustratorDAO">
     <property name="sessionFactory">
     <ref bean="sessionFactory" />
     </property>
     </bean>
     <bean id="IlluImageDAO"
     class="com.gswtek.mawjaw.dao.IlluImageDAO">
     <property name="sessionFactory">
     <ref bean="sessionFactory" />
     </property>
     </bean>
     <bean id="TvfilmDAO" class="com.gswtek.mawjaw.dao.TvfilmDAO">
     <property name="sessionFactory">
     <ref bean="sessionFactory" />
     </property>
     </bean>
     <bean id="UserService" class="com.gswtek.mawjaw.service.UserServiceImpl">
     <property name="userDAO" ref="UserDAO" />
     </bean>
     <bean id="WriterService" class="com.gswtek.mawjaw.service.WriterServiceImpl">
     <property name="writerDAO" ref="WriterDAO" />
     <property name="userDAO" ref="UserDAO" />
     </bean>
     <bean id="IllustratorService" class="com.gswtek.mawjaw.service.IllustratorServiceImpl">
     <property name="illuImageDAO" ref="IlluImageDAO" />
     <property name="illustratorDAO" ref="IllustratorDAO" />
     </bean>
     <bean id="TvfilmService" class="com.gswtek.mawjaw.service.TvfilmServiceImpl">
     <property name="tvfilmDAO" ref="TvfilmDAO" />
     </bean>
    </beans>
    2019-07-17 19:03:27
    赞同 展开评论 打赏
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
workshop专场-微服务专场-开发者动手实践营-微服务-Spring Cloud Alibaba 微服务全家桶体验 立即下载
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载

相关实验场景

更多