首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • getHibernateTemplate().find出现异常,请各位大虾来看下是什么情况~~ [已结贴,结贴人:bmj]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bmj
    • 等级:
    发表于:2008-08-24 10:51:34 楼主
    一个小程序,在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


    请问各位大虾,这种问题最有可能是什么原因引起的?谢谢了先
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-24 10:53:041楼 得分:10
    java.lang.NullPointerException
    at cn.edu.aust.dao.EmployeeTableDAO.findByNameAndPass(EmployeeTableDAO.java:68)
    看看EmployeeTableDAO.java的68行是什么问题,貌似有空指针
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bmj
    • 等级:
    发表于:2008-08-24 11:16:112楼 得分:0
    第68行:    return  getHibernateTemplate().find("from EmployeeTable where empName = ? and empPass = ?", args);
    问题是我在application里面调用的也是这个啊,就没报错。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-24 11:42:223楼 得分:5
    debug一下就清楚了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java2000_net
    • 等级:
    发表于:2008-08-24 12:00:464楼 得分:20
    getHibernateTemplate
    返回了 null;
    估计是配置文件位置错误,或者没有初始化。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bmj
    • 等级:
    发表于:2008-08-24 12:18:295楼 得分:0
    applicationContext.xml配置文件放在了WEB-INF文件夹下面,同时web.xml,struts-config.xml,一些.tld文件也在这个文件夹里面。至于初始化,不知道楼上的说的是不是如下的内容:
    web.xml里面的的一部分:
    <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>

    struts-config.xml里面的一部分:
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
            <set-property property="contextConfigLocation"
    value="WEB-INF/applicationContext.xml" />
    </plug-in>
    和配置文件有关的地方就这两个了,请各位看看是不是什么地方有疏漏?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-24 16:13:136楼 得分:5
    顶一下.学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-24 16:53:537楼 得分:0
    我也遇到过使用spring+hibernate的时候,在application中测试能完成,但是在web里面就抛出了NullPointerException的异常,有可能是hibernate懒加载机制的问题,我试过在hibernate映射文件中的多对一关系的lazy设置为false就没出错了,你可以试试看是不是这个问题
    我也在初学框架使用,经常遇到一些莫名其妙的问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-24 17:36:548楼 得分:20
    我刚才又测试了一下我写的那个程序,找到问题的根源了,可能是包冲突的问题,我用的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包就不会出现空指针异常了,说明就是包冲突的问题
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Landor2004
    • 等级:
    发表于:2008-08-25 09:17:459楼 得分:35
    那可能是配置的问题,用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>

    2 如果是spring2.5的话,加入spring-webmvc-struts.jar包,如果是2.0的话只需加入spring.jar包即可

    3 在applicationContext.xml中加入如下配置
    XML code
    <bean name="/listXxx" class="com.xxx.web.ListXxxAction" scope="prototype"> <property name="myXxxService" ref="myXxxService"></property> </bean> ......

    4 在ListXxxAction中可以进行直接调用了
    Java code
    private XxxService xxxService; public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) return mapping.findForward("success"); Collection<Xxx> xxxs = this.getXxxService().findXxxs(xxx); } get/set... ......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Landor2004
    • 等级:
    发表于:2008-08-25 09:20:4310楼 得分:0
    上面发现个错误,修改一下,如果applicationContext.xml在WEB-INF目录下,去掉class一级目录
    XML code
    <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /> </plug-in>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bmj
    • 等级:
    发表于:2008-08-25 09:40:2111楼 得分:0
    to yugang1219:非常之不幸,你说的两种我都试了,还是出现上面的错误。我都快疯了,这个问题都困扰了我好几天,太郁闷了。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-25 10:07:2412楼 得分:0
    我也遇到这个问题,也没解决。
    我的save,update,delete方法都能执行。就是find时出现空指针。
    关注中...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ncowboy
    • 等级:
    发表于:2008-08-26 10:54:0813楼 得分:0
    getHibernateTemplate()==null?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-08-26 10:59:1414楼 得分:0
    肯定是68行哪里出现null值了,参数正确吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • songfuqiang
    • 等级:
    发表于:2008-08-26 15:35:1715楼 得分:5
    System.out.println(getHibernateTemplate());看是否为空,为空就是配置有问题.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bmj
    • 等级:
    发表于:2008-08-27 09:05:4416楼 得分:0
    又测试了一下:
    Java code
    String[] args = {name,pass}; System.out.println(args[0]); System.out.println(args[0]); System.out.println(getHibernateTemplate());

    参数传进去了,没错,但System.out.println(getHibernateTemplate())打印出来的是null,看来是配置问题了,可就是不知道配置文件那里出错了。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Landor2004
    • 等级:
    发表于:2008-08-27 10:12:5417楼 得分:0
    哪里出问题不好说,需要看你的配置文件代码,全部
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bmj
    • 等级:
    发表于:2008-08-27 10:14:4618楼 得分:0
    哪位对spring配置比较熟悉的大虾有空闲时间的能帮忙看下配置文件么?本人刚开始学习这东东没多久,实在是没办法解决了。有兴趣的联系QQ:89165880。谢谢了先。。。。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mayerlong
    • 等级:
    发表于:2008-08-27 10:20:5119楼 得分:0
    getTemplate()没取到。。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bmj
    • 等级:
    发表于:2008-08-28 15:46:2420楼 得分:0
    问题已经解决,结贴,谢谢楼上各位达人的解答
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yyxsyf
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-10-01 23:12:2821楼 得分:0
      怎么解决的也不和大家分享一下,哎!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved