我根据视频中的一步一步的做的,可是在做到注册页面时。当点提交时就出项如下错误。
HTTP Status 500
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userdaoimpl' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.lxh.myznt.dao.impl.UserDAOImpl]: Constructor threw exception; nested exception is java.lang.NullPointerException
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:403)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:233)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:145)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:283)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:313)
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:139)
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:252)
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:190)
org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:83)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.startup.Catalina.start(Catalina.java:552)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)那位高手帮我解决一下啊

解决方案 »

  1.   

    com.lxh.myznt.dao.impl.UserDAOImpl
    检查这个类的构造函数,是不是传了null的参数。
      

  2.   

    我想也是这里传来一个NULL参数,我看了一下源代码,这个参数应该是sessionFactory,可是我觉得 我的sessionFactoryme没有配置错呀。applicationContext.xml如下:
    <beans>
    <bean id="dataSource"
    class="org.springframework.jndi.JndiObjectFactoryBean"
    destroy-method="close">
    <property name="jndiName">
    <value>java:comp/env/jdbc/mldn</value>
    </property>
    </bean>

    <bean id="hibernateInterceptor"
    class="org.springframework.orm.hibernate3.HibernateInterceptor">
    <property name="sessionFactory">
    <ref bean="sessionFactory" />
    </property>
    </bean> 

    <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>

    <prop key="hibernate.connection.autocommit">true</prop>

    <prop key="hibernate.show_sql">true</prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/lxh/myznt/vo/User.hbm.xml</value></list>
    </property></bean>

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory" ref="sessionFactory">

    </property>
    </bean>
        <bean id="userdao" class="com.lxh.myznt.dao.UserDAO"
    abstract="true">
    </bean>
    <bean id="userdaoimpl" class="com.lxh.myznt.dao.impl.UserDAOImpl"
    parent="userdao">
    <property name="hibernateTemplate" ref="hibernateTemplate">
    </property>
    </bean>
    <bean name="/jsp/user" class="com.lxh.myznt.struts.action.UserAction">
    <property name="userdao">
    <ref bean="userdaoimpl"/>
    </property>
    </bean>
    </beans>请高手指教!!谢谢
      

  3.   

    再附上UserDAOImpl的源代码package com.lxh.myznt.dao.impl;
    import net.sf.hibernate.SessionFactory;
    import org.springframework.orm.hibernate3.HibernateTemplate;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.lxh.myznt.dao.UserDAO;
    import com.lxh.myznt.vo.User;public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {

    private SessionFactory sessionFactory;

    public void register(User user)throws Exception{
    super.getSession().save(user);
    }
    }
      

  4.   

    求求各位高手了,我完全是自学的SSH。我完全按照李兴华这个视频做的,可就是有错,我已经整
    了几天了,可是还没搞定。
      

  5.   

    public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {private SessionFactory sessionFactory;//为什么要有这个public void register(User user)throws Exception{
    super.getSession().save(user);
    }
    }
      

  6.   

    再附上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">

    <filter>
    <filter-name>encoding</filter-name>
    <filter-class>com.lxh.myznt.filter.EncodingFilter</filter-class>
    <init-param>
    <param-name>charset</param-name>
    <param-value>gbk</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <filter>
    <filter-name>opensession</filter-name>
    <filter-class>
    org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
    </filter-class>
    </filter>
    <filter-mapping>
    <filter-name>opensession</filter-name>
    <url-pattern>*.do</url-pattern>
    </filter-mapping>
      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>
              /WEB-INF/classes/applicationContext.xml
          </param-value>
      </context-param>
      <servlet>
          <servlet-name>contextLoader</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>
    <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>index.jsp</welcome-file>
    </welcome-file-list>
    <resource-ref> 
          <description>DB Connection</description> 
          <res-ref-name>jdbc/mldn</res-ref-name> 
          <res-type>javax.sql.DataSource</res-type> 
          <res-auth>Container</res-auth> 
         </resource-ref> 
    </web-app>
      

  7.   


    <beans> 
    <bean id="dataSource" 
    class="org.springframework.jndi.JndiObjectFactoryBean" 
    destroy-method="close"> 
    <property name="jndiName"> 
    <value>java:comp/env/jdbc/mldn </value> 
    </property> 
    </bean> <bean id="hibernateInterceptor" 
    class="org.springframework.orm.hibernate3.HibernateInterceptor"> 
    <property name="sessionFactory"> 
    <ref bean="sessionFactory" /> 
    </property> 
    </bean> <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> <prop key="hibernate.connection.autocommit">true </prop> <prop key="hibernate.show_sql">true </prop> 
    </props> 
    </property> 
    <property name="mappingResources"> 
    <list> 
    <value>com/lxh/myznt/vo/User.hbm.xml </value> </list> 
    </property> </bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
      <property name="sessionFactory" ref="sessionFactory"/> 
    </bean> 
    <bean id="userdao" class="com.lxh.myznt.dao.UserDAO"  abstract="true"> 
    </bean> 

    <bean id="userdaoimpl" class="com.lxh.myznt.dao.impl.UserDAOImpl" parent="userdao"> 
    <bean id="userdaoimpl" class="com.lxh.myznt.dao.impl.UserDAOImpl">
      <property name="hibernateTemplate" ref="hibernateTemplate"/> 
    </bean> 
    <bean name="/jsp/user" class="com.lxh.myznt.struts.action.UserAction"> 
      <property name="userdao"> 
        <ref bean="userdaoimpl"/> 
      </property> 
    </bean> 
    </beans> 
    然后public class UserDAOImpl extends HibernateDaoSupport implements UserDAO { 
      private SessionFactory sessionFactory;    //去掉这个
      public void register(User user)throws Exception{ 
        super.getSession().save(user); 
      }
    }
      

  8.   

    <bean id="userdao" class="com.lxh.myznt.dao.UserDAO"  abstract="true"> 
    </bean>这个是要删除的