问题描述
用的spring+hibernate,那位达人能帮忙解决下,感激不尽.web.xml里:....<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>....applicationContext.xml里:....<bean id="dataSource" <br=""> class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" <br=""> value="com.mysql.jdbc.Driver"> </property> <property name="url" <br=""> value="jdbc:mysql://localhost:3306/test"> </property> <property name="username" value="root"></property> <property name="password" value="root"></property> </bean> <bean id="sessionFactory" <br=""> 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>com/test/vo/User.hbm.xml</value> </property></bean><bean id="transactionManager" <br=""> class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory"> <ref local="sessionFactory"> </property> </bean> <bean id="userDAOProxy" <br=""> class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager"> <ref bean="transactionManager"> </property> <property name="target"> <ref local="userDAO"> </property> <property name="transactionAttributes"> <props> <prop key="save*">PROPAGATION_REQUIRED </prop> <prop key="update*">PROPAGATION_REQUIRED </prop> <prop key="delete*">PROPAGATION_REQUIRED </prop> <prop key="find*">PROPAGATION_REQUIRED,readOnly </prop> </props> </property> </bean> <bean id="userDAO" class="com.test.dao.Impl.UserDAOImpl"> <property name="sessionFactory"> <ref bean="sessionFactory"> </property> </bean>.... DAO里:...public class UserDAOImpl extends HibernateDaoSupport implements UserDAO{ private static final Log log = LogFactory.getLog(UserDAOImpl.class); private String hql = "from user u where u.name = ?"; private boolean bo= false; protected void initDao() { // do nothing } public boolean save(User user) { try { this.getHibernateTemplate().save(user);//执行到这里出错,User对象里的name和passwd不是空的. this.getHibernateTemplate().flush();//getHibernateTemplate()调用的各种操作都出现这样的错误. bo = true; } catch (RuntimeException re) { throw re; } return bo; }}.......出现的错误提示如下:2008-8-22 13:18:34 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet regedit threw exceptionjava.lang.NullPointerException at com.test.dao.Impl.UserDAOImpl.save(UserDAOImpl.java:41) at com.test.service.Impl.RegeditImpl.save(RegeditImpl.java:27) at com.test.action.RegeditController.doPost(RegeditController.java:32) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:674) 问题补充:我把spring 配置文件里的标签随便删几个,让不对应,或把dataSource改了,竟然还是提示这样的错误!!!在web.xml里使用listener,启动tomcat时就出错.郁闷了啊!问题补充:怎么测试spring hibernate 连接数据库了?
解决方案
at com.test.dao.Impl.UserDAOImpl.save(UserDAOImpl.java:41)从这句看来UserDAOImpl是null啊, 也就是userDAO没有注入, 看下调用userDAO.save()这个方法的那个类中的userDAO是否为NULL!
解决方案二:
java.lang.NullPointerException at com.test.dao.Impl.UserDAOImpl.save(UserDAOImpl.java:41)完全同意没有注入,我也遇到过
解决方案三:
很明显是useDAO没有注入
解决方案四:
servlet-name>context</servlet-name> <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> <load-on-startup>1</load-on-startup>换成listener,有可能是你的Servlet的版本是3.5以的的,不支持ContextLoaderSevlet
解决方案五:
“getHibernateTemplate()调用的各种操作都出现这样的错误.”是不是没有连接到数据库?检查一下代码是否能正确的连接数据库。