Spring+Hibernate+Struts+Tomcat+MyEclipse
Tomcat能起来,但一提交页面就报错:
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
查了下说要在Web.xml中给Spring配个监听器,添加了以下代码,Tomcat启动时就抱错:
Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass
java.lang.NoClassDefFoundError: org/hibernate/cfg/HbmBinder$SecondPass<listener>
  <listener-class>
     org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>以下是几个配置文件,望高手帮忙
1.web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>user.jsp</welcome-file>
  </welcome-file-list>
</web-app>2.struts-config.xml<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="userForm" type="org.login.struts.form.UserForm" />
  </form-beans>  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="userForm"
      input="/user.jsp"
      name="userForm"
      path="/user"
      scope="request"
      type="org.springframework.web.struts.DelegatingActionProxy"
      > 
      <forward name="success" path="/success.jsp" />
      <forward name="fail" path="/user.jsp" />
    </action> 
  </action-mappings> 
  
  <message-resources parameter="org.login.struts.ApplicationResources" />
  <!-- 将Struts集成到Spring 中 -->
</struts-config>3.applicationContext.xml<beans>
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/SQLLABS">
</property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</bean>

<!-- 集成Hibernate -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>/org/login/vo/User.hbm.xml</value>
</list>
</property>
</bean>

<!--  -->
<bean id="userDAO" class="org.login.dao.UserDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

<bean id="userService" class="org.login.service.UserService"
abstract="false" singleton="true" lazy-init="default"
autowire="default" dependency-check="default">
<property name="userDao">
<ref local="userDAO" />
</property>
</bean>

<bean name="/user" class="org.login.struts.action.UserAction"
abstract="false" singleton="false" lazy-init="default"
autowire="default" dependency-check="default">
<property name="userService">
<ref local="userService" />
</property>
</bean>
</beans>

解决方案 »

  1.   

    修改你的web.xml的配置如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <!-- 屏蔽这个listener-->
    <!--listener>
      <listener-class>
       org.springframework.web.context.ContextLoaderListener
      </listener-class>
     </listener-->
    <!-- 添加contextConfiglocation-->
    <context-param>
     <param-name> contextConfigLocation </param-name>  
    <param-value> /WEB-INF/applicationContext.xml </param-value>  
    </context-param>  
    <servlet>  
    <servlet-name> context </servlet-name>  
    <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class>  
    <load-on-startup> 1 </load-on-startup>  
    </servlet> 
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
          <param-name>config</param-name>
          <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
          <param-name>debug</param-name>
          <param-value>3</param-value>
        </init-param>
        <init-param>
          <param-name>detail</param-name>
          <param-value>3</param-value>
        </init-param>
    <!--从0改为2-->
        <load-on-startup>2</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>user.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    具体原理请你自己多去看看相关资料(我只知道这么用,原理你可以贴出来我们一起分享哈)。
      

  2.   

    Hibernate 版本兼容问题
    看看这里
    http://www.blogjava.net/fine/archive/2006/08/10/62715.html
      

  3.   

    可以参考一下这里:
    struts+spring+hibernate的web应用 
    http://www.blogjava.net/rickhunter/articles/113084.html