ssh 框架整合 报空指针

yym1202000 2008-08-29 02:45:22



大哥们!帮我看看啊
我整合后怎么老报这个错误,经测试struts-spring整合是没错,加上hibernate就有错误了
.lang.NullPointerException
hibernate.LoginDAO.save(LoginDAO.java:30)
com.struts.action.LoginAction.execute(LoginAction.java:56)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)

其实就是getHibernateTemplate().save(transientInstance); 这里getHibernateTemplate()得到的是null.
下面是我spring的配置文件:
<beans>
<bean name="/login" class="com.struts.action.LoginAction" singleton="false"></bean>

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbcracle:thin:@192.168.0.51:1521:nnmm</value>
</property>
<property name="username">
<value>ya</value>
</property>
<property name="password">
<value>ya</value>
</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.Oracle9Dialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>hibernate/Login.hbm.xml</value></list>
</property></bean>

<bean id="LoginDAO" class="hibernate.LoginDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>

</beans>

我new了个LoginDAO,是不是不能new?
是不是一定要这样?
FileSystemXmlApplicationContext ctx = new FileSystemXmlApplicationContext(fileName);
LoginDAOu=(LoginDAO)ctx.getBean("LoginDAO");
...全文
166 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yym1202000 2008-09-01
  • 打赏
  • 举报
回复
谢谢楼上大哥
看了下书后,终于搞定了.
peihexian 2008-08-29
  • 打赏
  • 举报
回复
下班了,长话短说,
logindao实现一个ilogindao接口
action类中定义使用ilogindao接口的变量如 xxx
spring把ilogindao的实现类注入到你的action的ilogindao变量xxx中去
action类中使用xxx去做数据库操作

不明白的话先看看书。
peihexian 2008-08-29
  • 打赏
  • 举报
回复
楼主显然还没有搞清楚spring的设计思想,spring提倡的就是你只用接口,不用去管实现代码在哪,所以很明显你应该在action中去用接口,而不是去new longdao
yym1202000 2008-08-29
  • 打赏
  • 举报
回复
loginDAO实现了HibernateSessionFactoru接口了
public class LoginDAO extends HibernateDaoSupport {

private static final Log log = LogFactory.getLog(LoginDAO.class);

//property constants
public static final String NAME = "name";
public static final String PASSWORD = "password";

protected void initDao() {
//do nothing
}

public void save(Login transientInstance) {
log.debug("saving Login instance");

System.out.println("yes----2--------"+getHibernateTemplate().toString());
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
是不是loginDao 不能new啊,或者是包的问题
huangyangweiyue 2008-08-29
  • 打赏
  • 举报
回复
这个session 是实现 HibernateSessionFactory接口获得的。

需要自己你的LoginDAO 现这个接口生成session对象
yym1202000 2008-08-29
  • 打赏
  • 举报
回复
估计没得到,不是直接用getHibernateTemplate可以调用方法了吗
qiaozirue 2008-08-29
  • 打赏
  • 举报
回复
看一下你实现类的获到SESSION的值了吗?有可以没有获到..

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧