J2EE  SSH开发WebProject出现的空指针异常:严重: Servlet.service() for servlet action threw exception
java.lang.NullPointerException
at com.web.action.FoodAction.AddFood(FoodAction.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
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(Thread.java:619)
______________________________________________________________
Spring 实现依赖注入:
<bean id="foods" class="com.entity.Foods"></bean>
<bean id="db" class="com.dao.dbDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="foodDao" class="com.dao.foodDao">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="foodBiz" class="com.biz.foodBiz">
<property name="fdao" ref="foodDao"></property>
<property name="foods" ref="foods"></property>
</bean>
<bean id="FoodAction" class="com.web.action.FoodAction">
<property name="fbiz" ref="foodBiz"></property>
<property name="foods" ref="foods"></property>
</bean>
--------------------------------------------------------------
从页面传入数据到Form中,再从Action中调用Form 中的数据...
public ActionForward AddFood(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
FoodForm foodForm = (FoodForm) form;// TODO Auto-generated method stub
    //Foods f=foodForm.getFoods();
    //Foods foo=new Foods();
    String name=foodForm.getFoodName();
    String type=foodForm.getFoodType();
    double price=foodForm.getFoodPrice();
    String material=foodForm.getFoodMaterial();
    String method=foodForm.getFoodMakeMethod();
    String img=foodForm.getImage();
    Foods foods=new Foods();
    foods.setFoodName(name);
    foods.setFoodType(type);
    foods.setFoodPrice(price);
    foods.setFoodMaterial(material);
    foods.setFoodMakeMethod(method);
    foods.setImage(img);
    boolean flag=fbiz.createFoods(foods);
if(flag){
return mapping.findForward("success");
}else{
return mapping.findForward("error");
}
}
-----------------------------------------------
页面加载数据也同样出现空指针异常:
public ActionForward LoadFood(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
FoodForm foodForm = (FoodForm) form;// TODO Auto-generated method stub
    list=fbiz.searchFoods();
    request.setAttribute("flist", list);
if(list.size()!=0){
return mapping.findForward("result");
}else{
return mapping.findForward("error");
}
}

解决方案 »

  1.   

    at com.web.action.FoodAction.AddFood(FoodAction.java:96)
    FoodAction的第96行,打个断点跟一下,看看那一行哪个对象是null
      

  2.   

    应该是fbiz没有被初始化.FoodAction里面有setFbiz(com.biz.foodBiz biz)这个方法吗?
      

  3.   

    仔细看下foodAction,在里面设置打印一下看看可是null
      

  4.   

    怀疑是这一句:
    boolean flag=fbiz.createFoods(foods);
    的fbiz初始化失败,就是个null
      

  5.   

       list=fbiz.searchFoods();
     兄弟你这个list 初始化了没啊? 不初始化 也应该声明啊! 
      

  6.   

    太容易处理了,NUlL看到应该开心,至少它是比较容易解决的.
    不会DEBUG,System.out.println会吧,一个一个打印就知道哪里不对了
      

  7.   

    boolean flag=fbiz.createFoods(foods);这行报错,fbiz未定义啊?也没创建,当然会空指针
      

  8.   

    --------------------------------
    FoodAction里是通过依赖注入的吖:是这样实例化?
    private List list;
    public List getList() {
    return list;
    }
    public void setList(List list) {
    this.list = list;
    }

    private foodBiz fbiz;
    public void setFbiz(foodBiz fbiz) {
    this.fbiz = fbiz;
    }

    private Foods foods;
    public void setFoods(Foods foods) {
    this.foods = foods;
    }
    --------------------------------------------
      

  9.   

    at com.web.action.FoodAction.AddFood(FoodAction.java:96)错误在这行,建议调试下