SpringMVC+Mybatis调用后台报空指针异常,代码没查出错误,页面也有参数传进来,求解答

[DEBUG]2015-08-12 11:07:30,234 org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver Resolving exception from handler [public java.util.Map cn.sg.controller.BackStageController.QueStoreList(javax.servlet.http.HttpServletRequest)]: java.lang.NullPointerException
[DEBUG]2015-08-12 11:07:30,236 org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver Resolving exception from handler [public java.util.Map cn.sg.controller.BackStageController.QueStoreList(javax.servlet.http.HttpServletRequest)]: java.lang.NullPointerException
[DEBUG]2015-08-12 11:07:30,236 org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver Resolving exception from handler [public java.util.Map cn.sg.controller.BackStageController.QueStoreList(javax.servlet.http.HttpServletRequest)]: java.lang.NullPointerException
[DEBUG]2015-08-12 11:07:30,236 org.springframework.web.servlet.DispatcherServlet Could not complete request
java.lang.NullPointerException
at cn.sg.controller.BackStageController.QueStoreList(BackStageController.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
八月 12, 2015 11:07:30 上午 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet [sasmvc] in context with path [/CUPBOARD] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at cn.sg.controller.BackStageController.QueStoreList(BackStageController.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:100)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:604)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:565)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

import cn.sg.service.BackStageService;

@Controller
@RequestMapping("/cupboard")
public class BackStageController {
@Autowired
@Qualifier("BackStageService")
private static BackStageService backStageService;

public static void setBackStageService(BackStageService backStageService) {
    BackStageController.backStageService = backStageService;
}
@RequestMapping("queryStoreList.htm")
public String getChoose1(HttpServletRequest request, Model model){
    return "backstage/store_list";
}
@RequestMapping(value = "storelist.htm",produces = {"application/json;charset=UTF-8"})
@ResponseBody
public Map<String,Object> QueStoreList(HttpServletRequest request){
    String date = request.getParameter("date");
    Integer pageIndex = Integer.parseInt(request.getParameter("pageIndex"));
    Integer pageSize = Integer.parseInt(request.getParameter("pageSize"));
    System.out.println(date+"////"+pageIndex+"////"+(pageIndex-1)*pageSize+"////"+pageSize);
    Map<String,Object> params = new HashMap<String,Object>();
    params.put("date",date);
    params.put("name", "");
    params.put("area", "");
    params.put("start", (pageIndex-1)*pageSize);
    params.put("limit", pageSize);
    Map<String,Object> productmap = backStageService.qryProductByPage(params);
    for (String key : productmap.keySet()) {
           System.out.println("key= "+ key + " and value= " + productmap.get(key));
          }
    return productmap;
}
@RequestMapping(value = "getPages.htm",produces = {"application/json;charset=UTF-8"})
@ResponseBody
public Map<String,Object> getPages(HttpServletRequest request){
    String date = request.getParameter("date");
    Integer pageIndex = Integer.parseInt(request.getParameter("pageIndex"));
    Integer pageSize = Integer.parseInt(request.getParameter("pageSize"));
    System.out.println(date+"////"+pageIndex+"////"+(pageIndex-1)*pageSize+"////"+pageSize);
    Map<String,Object> params = new HashMap<String,Object>();
    params.put("date",date);
    params.put("name", "");
    params.put("area", "");
    params.put("start", (pageIndex-1)*pageSize);
    params.put("limit", pageSize);
    //BackStageMap storeList = new BackStageMap();
    Map<String,Object> pagemap = backStageService.qryPages(params);
    return pagemap;
}
@RequestMapping(value = "storelistsearch.htm",produces = {"application/json;charset=UTF-8"})
@ResponseBody
public Map<String,Object> QueStoreListByParams(HttpServletRequest request){
    String date = request.getParameter("date");
    String store = request.getParameter("store");
    String area = request.getParameter("area");
    System.out.println("date:"+date+"***"+"store:"+store+"***"+"area:"+area);
    BackStageMap storeList = new BackStageMap();
    Map<String,Object> map = storeList.getStoreMaps();
    return map;
}

}

package cn.sg.service;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

import cn.sg.dao.ProductDao;

@Service("BackStageService")
public class BackStageService {
@Autowired
@Qualifier("productDaoImpl")
private ProductDao productDao;
public void setProductDao(ProductDao productDao) {
this.productDao = productDao;
}
public Map qryAllProduct(){
Map map = productDao.qryAllProduct();
return map;
}
public Map qryPages(Map params){
Map map = productDao.qryPages(params);
return map;
}
public Map qryProductByPage(Map params){
Map map = productDao.qryProductByPage(params);
return map;
}
}

package cn.sg.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.stereotype.Repository;

import cn.sg.dao.ProductDao;
import cn.sg.model.Product1;
import cn.sg.model.inter.ProductMapper1;
import cn.sg.util.MyBatisUtil;
@Repository("productDaoImpl")
public class ProductDaoImpl implements ProductDao {
/**
* 获取所有商品
*/
public Map qryAllProduct() {
SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSessionFactory();
SqlSession session = sqlSessionFactory.openSession();
ProductMapper1 pMapper = session.getMapper(ProductMapper1.class);
Map map = null;
try {
List productLists = pMapper.qryAllProduct();
for (Product1 p : productLists)

System.out.println(p.getName()+","+p.getNum()+","+p.getArea());
map = new HashMap();
map.put("products", productLists);
map.put("success", "true");

    } catch (Exception e) {
        e.printStackTrace();
    } finally{
        session.close();
    }
    return map;
}
public Map<String, Object> qryPages(Map<String,Object> params) {
    SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSessionFactory();
    SqlSession session = sqlSessionFactory.openSession();
    ProductMapper1 pMapper = session.getMapper(ProductMapper1.class);
    Map<String, Object> map = null;
    int page = 0;
    try {
        Product1 product1 = pMapper.qryProductNum(params);
        page = (product1.getPages())/(Integer.parseInt((String) params.get("pageSize")));
        System.out.println(page);
        map = new HashMap<String, Object>();
        map.put("pages", page);
        map.put("success", "true");
    } catch (Exception e) {
        e.printStackTrace();
    } finally{
        session.close();
    }
    return map;
}
@Override
public Map<String, Object> qryProductByPage(Map<String, Object> params) {
    SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSessionFactory();
    SqlSession session = sqlSessionFactory.openSession();
    ProductMapper1 pMapper = session.getMapper(ProductMapper1.class);
    Map<String, Object> map = null;
    try {
        List<Product1> productList = pMapper.qryProductByPage(params);
        for (Product1 p : productList)  
            System.out.println(p.getName()+","+p.getNum()+","+p.getArea());
        map = new HashMap<String, Object>();
        map.put("products", productList);
        map.put("success", "true");
    } catch (Exception e) {
        e.printStackTrace();
    } finally{
        session.close();
    }
    return map;
}

}

package cn.sg.model.inter;

import java.util.List;
import java.util.Map;

import cn.sg.model.Product1;

public interface ProductMapper1 {
//获取所有商品
public List qryAllProduct();
//查询商品总数
public Product1 qryProductNum(Map params);
//分页查询商品
public List qryProductByPage(Map params);
}

图片说明
你看截图,错误显示是你BackStageController里面报异常了,你检查下是不是你这个控制器类里面用到的service或者其它类的对象没有在spring配置文件里面配置好

BackStageController.questoreList 里面报的空指针,具体的自己找一下

支持楼主,总结的不错,源码地址下载:
http://blog.sina.com.cn/s/blog_1533bbe160102weh3.html