首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

新手 Spring 中的 getHibernateTemplate() 空指针 疯了解决方法

2011-12-29 
新手 Spring 中的 getHibernateTemplate() 空指针 疯了这是我的DAOpublic class UserDaoImpl extends Hibe

新手 Spring 中的 getHibernateTemplate() 空指针 疯了
这是我的DAO
public class UserDaoImpl extends HibernateDaoSupport implements UserDAO{
  public User findUserByName(String name) {
System.out.println(getHibernateTemplate()); //输出null
//空指针的地方List list = this.getHibernateTemplate().find("from User as user where user.userName='admin'");
if (list == null || list.size() == 0) {
return null;
}
  }
}

错误信息

null
2008-9-9 23:06:04 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.allen.dao.hib.UserDaoImpl.findUserByName(UserDaoImpl.java:137)
at com.allen.service.spring.LoginServiceImp.userLogin(LoginServiceImp.java:15)
at com.allen.action.LoginAction.login(LoginAction.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.actions.MappingDispatchAction.execute(MappingDispatchAction.java:169)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
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:233)
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:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)



我的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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<property name="url"
value="jdbc:mysql://localhost:3306/MySql">
</property>
<property name="username" value="root"></property>
<property name="password" value="root"></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>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/allen/model/User.hbm.xml</value></list>
  </property>
  </bean>
  <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
  <constructor-arg>
  <ref local="sessionFactory" />
  </constructor-arg>
  </bean>
  <bean id="UserDaoImpl" class="com.allen.dao.hib.UserDaoImpl">
  <property name="sessionFactory">
  <ref bean="sessionFactory" />
  </property>
  </bean>
</beans>

本人新手刚学spring 问题崩溃两天 高手给看一下

[解决办法]

在你的web.xml文件中有没有配置SPRING
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
[解决办法]
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
<constructor-arg> 
<ref local="sessionFactory" /> 
</constructor-arg> 
</bean> 
去掉!
[解决办法]
web.xml加上

Java code
<filter>    <filter-name>OpenSessionInViewFilter</filter-name>    <filter-class>        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter    </filter-class></filter>
[解决办法]
应该 把 hibernateTemplate注入到你的UserDaoImpl里面,
而不是sessionFactory注入 UserDaoImpl。

热点排行