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

getHibernateTemplate().find出现错误,请各位来看下是什么情况~~

2011-12-26 
getHibernateTemplate().find出现异常,请各位大虾来看下是什么情况~~一个小程序,在application中测试能完

getHibernateTemplate().find出现异常,请各位大虾来看下是什么情况~~
一个小程序,在application中测试能完成,代码如下:

final ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.xml");
final SessionFactory sessionFactory = (SessionFactory)ctx.getBean("localsessionfactory");

public void nametest(){

HibernateTemplate template=new HibernateTemplate(this.sessionFactory);
EmployeeTableDAO employee = new EmployeeTableDAO();

EmployeeTable employeetable = new EmployeeTable();

employee.setHibernateTemplate(template);
if(employee.findByNameAndPass("hello", "hello").size()>0){
System.out.println("1");
System.out.println(employee.findByNameAndPass("hello", "hello").size());

}else{
System.out.println("2");
}
}

但是在web里面就有问题,代码如下:

 if(employee.findByNameAndPass("hello", "hello").size()>0){
// request.setAttribute("result" , "您已经成功登陆系统");
System.out.println("login success!");
return mapping.findForward("loginsuccess");

}else{
// request.setAttribute("result" , "不存在该用户或者用户名和密码不符");
System.out.println("login failed!");
return mapping.findForward("login");
}

调用的findByNameAndPass方法在EmployeeTableDAO类中,代码如下:
public List findByNameAndPass(String name, String pass) {
String[] args = {name,pass};
return getHibernateTemplate().find("from EmployeeTable where empName = ? and empPass = ?", args);
}

测试的application和web用的都是同一个applicationContext.xml配置文件,在web应用中也在struts-config.xml中进行了配置,配置文件如下:
 <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
  <set-property property="contextConfigLocation" 
value="WEB-INF/applicationContext.xml" />
</plug-in>

现在的问题是同样的配置,同样的代码,在application里面可以通过,但在web里面就有问题,报错如下:
2008-8-24 10:50:29 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at cn.edu.aust.dao.EmployeeTableDAO.findByNameAndPass(EmployeeTableDAO.java:68)
at cn.edu.aust.struts.action.LoginAction.execute(LoginAction.java:56)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
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(Unknown Source


请问各位大虾,这种问题最有可能是什么原因引起的?谢谢了先

[解决办法]
java.lang.NullPointerException 
at cn.edu.aust.dao.EmployeeTableDAO.findByNameAndPass(EmployeeTableDAO.java:68) 
看看EmployeeTableDAO.java的68行是什么问题,貌似有空指针
[解决办法]
debug一下就清楚了
[解决办法]
getHibernateTemplate
返回了 null;

估计是配置文件位置错误,或者没有初始化。
[解决办法]
顶一下.学习了
[解决办法]
我刚才又测试了一下我写的那个程序,找到问题的根源了,可能是包冲突的问题,我用的spring2+hibernate3
在http://topic.csdn.net/u/20080803/20/79c8994d-1ef3-4112-9d02-453d797fb790.html这篇帖子里面有个回复提到了整合Struts2+Spring2.0+Hibernate3.1 注意的问题,Spring2.0+Hibernate3.1 个别的jar包版本有冲突,要删除以下6个jar包:
asm-2.2.3.jar,asm-commons-2.2.3.jar,asm.jar,asm-attrs.jar,asm-util-2.2.3.jar,cglib-2.1.3.jar 

我之前把spring2换成spring1就不会出现空指针异常,今天我试了试删除了那6个jar包就不会出现空指针异常了,说明就是包冲突的问题
[解决办法]
那可能是配置的问题,用ContextLoaderPlugIn来整合struts1和spring有如下几个步骤

1 在struts-config.xml中加入如下配置文件(如果applicationContext.xml在WEB-INF目录下)

XML code
  <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">        <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" />   </plug-in>
[解决办法]
System.out.println(getHibernateTemplate());看是否为空,为空就是配置有问题.

热点排行