想做一个简单的登录验证,结果不停的报空指针错误,郁闷呐!!向各位求助一下!!
报错如下
严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:58)
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.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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:191)
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:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)各位靠你们了!!

解决方案 »

  1.   

    用的是struts1+spring+hibernate 
      

  2.   

    CheckAction.java:58这行附近的代码都发出来瞧瞧
      

  3.   

    这是checkAction
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    // TODO Auto-generated method stub

    CheckForm check=(CheckForm) form;

    Users user=userbiz.findByUserNameAndPassWord(check.getUser().getUserName(), check.getUser().getPassWord());

    if (user!=null) {
    return mapping.findForward("show");
    }else {
    return mapping.findForward("error");
    }
      

  4.   

    58行是哪一行?
    在 Users user=userbiz.findByUserNameAndPassWord(check.getUser().getUserName(), check.getUser().getPassWord());这一句之前
    Sysout一下userbiz,这玩意在哪初始化的
      

  5.   

    userbiz和form都可能为空,只能自己打断点调试一下了。
      

  6.   

    不好意思 Users user=userbiz.findByUserNameAndPassWord(check.getUser().getUserName(), check.getUser().getPassWord());这一行就是58行
    userbiz我在checkAction中 做成了私有属性 生成了get set方法的!!
      

  7.   

    请问楼主有没在spring里面注入userbiz呢?
      

  8.   

    貌似在这个action的bean定义里面注入一下userbiz就不会出现这个问题了。
      

  9.   


    注入了 
    <bean id="UsersBIZ" class="struts1.test1.biz.UsersBIZImpl"></bean>
    这样没问题吧!!
      

  10.   


    加上这个
    <bean id="*Action" class="*">
    <property name="userbiz" ref="UsersBIZ" />
    </bean>
      

  11.   


    我写的这段是指,在你这个action的bean定义里面 加上 
    <property name="userbiz" ref="UsersBIZ" />
    就行的。
      

  12.   

    比如:
    <bean id="bwfReviewCheckInfoAction" scope="prototype" 
    class="com.eshore.itsm.billing.processMonitor.web.action.BwfReviewCheckInfoAction">
    <property name="bwfReviewCheckInfoService" ref="bwfReviewCheckInfoService" />
    </bean><bean id="bwfReviewCheckInfoService" 
    class="com.eshore.itsm.billing.processMonitor.service.impl.BwfReviewCheckInfoServiceImpl">
    <property name="publicTableDAO" ref="publicTableDAO" /> 
    </bean>
      

  13.   

    现在报这错 
    严重: Servlet.service() for servlet action threw exception
    java.lang.NullPointerException
    at struts1.test1.biz.UsersBIZImpl.findByUserNameAndPassWord(UsersBIZImpl.java:79)
    at com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:61)
    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.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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:191)
    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:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Thread.java:619)
      

  14.   

    UsersBIZImpl.java:79 return userdao.findByUserNameAndPassWord(userName, password);CheckAction.java:61Users user=userbiz.findByUserNameAndPassWord(check.getUser().getUserName(), check.getUser().getPassWord());
      

  15.   

    很明显,已经不是userbiz为null那个错误了,楼主检查下UsersBIZImpl.java 79行,看下什么问题
      

  16.   

    怀疑是同样的错误,应该是userdao没有注入到userbiz里面
      

  17.   

    我也是刚想到这个问题试了一下 不报空指针了 又抱这错了严重: Servlet.service() for servlet action threw exception
    org.hibernate.hql.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from users where username='admin' and password='123']
    at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
    at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
    at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:284)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1651)
    at struts1.test1.dao.UsersDAOImpl.findByUserNameAndPassWord(UsersDAOImpl.java:191)
    at struts1.test1.biz.UsersBIZImpl.findByUserNameAndPassWord(UsersBIZImpl.java:79)
    at com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:61)
    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.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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:191)
    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:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Thread.java:619)红色那一行为报错的行
    String hql="select * from users where username='"+userName+"' and password='"+password+"'";
    Session session=super.getSession();
    Query query=session.createQuery(hql);
    super.releaseSession(session);
    return (Users)query.uniqueResult();
      

  18.   

    Query query=session.createQuery(hql);这行报错
      

  19.   


    作为userbiz的一个私有属性 并生成get set方法!
      

  20.   

    楼主是用的hibernate吗?  hibernate的hql好像不是这样写的哦? 楼主还是先学习下hibernate吧。
      

  21.   


    哈哈 太悲剧了 我也发现了 语句有问题 呵呵 能不能给个hql例子 
      

  22.   

    lz,你让我想到了我刚学ssh框架的时候,也是丢三落四的!不是这里没注入,就是那里报错,呵呵!看了楼主还有很大的进升空间呀,加油啦!
      

  23.   

    额......................再麻烦大家一下  我改了hql语句 现在又抱这错
    严重: Servlet.service() for servlet action threw exception
    org.hibernate.hql.ast.QuerySyntaxException: users is not mapped [from users as u where u.userName='admin' and u.passWord='123']
    at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:181)
    at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
    at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:94)
    at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:316)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3228)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3112)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:720)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:571)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:288)
    at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:231)
    at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1651)
    at struts1.test1.dao.UsersDAOImpl.findByUserNameAndPassWord(UsersDAOImpl.java:191)
    at struts1.test1.biz.UsersBIZImpl.findByUserNameAndPassWord(UsersBIZImpl.java:79)
    at com.yourcompany.struts.action.CheckAction.execute(CheckAction.java:61)
    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.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    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:191)
    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:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Thread.java:619)
      

  24.   

    from 后面加的是java对象名,并非表名,楼主注意下。
      

  25.   


    恩 谢谢了 我已经解决完了 就是这个问题 十分感谢各位 哈哈 不过如果在applicationContext.xml文件头部加一个 default-autowire="byType" 就会自动注入了 哈哈 我没加就想玩儿自动 晕!!