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");
}
}
FoodAction的第96行,打个断点跟一下,看看那一行哪个对象是null
boolean flag=fbiz.createFoods(foods);
的fbiz初始化失败,就是个null
兄弟你这个list 初始化了没啊? 不初始化 也应该声明啊!
不会DEBUG,System.out.println会吧,一个一个打印就知道哪里不对了
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;
}
--------------------------------------------