You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提交表单时出现java.lang.NullPointerException及HTTP 500错误求助

解决新增供应商时的java.lang.NullPointerException问题

从你的错误日志和代码来看,这个空指针异常的原因非常明确:你在SupplierController中声明的SupplierDAO实例dao从未被初始化,当doPost方法执行到dao.add(supplier)(第91行)时,dao还是null状态,调用它的方法自然会抛出NullPointerException。

问题根源

看你的SupplierController代码,你只做了变量声明:

private SupplierDAO dao;

但在构造函数或者任何初始化逻辑里,都没有创建SupplierDAO的实例,所以这个变量始终是null。

修复方案

最简单的修复方式是在SupplierController的构造函数中初始化dao:

public SupplierController() {
    super();
    dao = new SupplierDAO(); // 新增这一行,实例化SupplierDAO对象
}

或者你也可以直接在变量声明时完成初始化:

private SupplierDAO dao = new SupplierDAO();

额外的小问题提醒

在你的doPost方法里,还有一个参数赋值错误:

supplier.setSupplier_address(request.getParameter("supplier_description"));

这里你把供应商地址(supplier_address)错误地赋值成了描述字段的参数,应该修正为:

supplier.setSupplier_address(request.getParameter("supplier_address"));

附你提供的错误日志

Jun 01, 2018 5:05:39 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [SupplierController] in context with path [/jsp-projek] threw exception java.lang.NullPointerException at eManage.controller.SupplierController.doPost(SupplierController.java:91) at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source)

附你提供的相关代码

public class SupplierController extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static String ADD = "/supplier_add.jsp";
    private static String VIEW = "/supplier_view.jsp";
    private static String EDIT = "/supplier_edit.jsp";
    private static String LIST = "/supplier.jsp";
    String forward="";
    private SupplierDAO dao;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public SupplierController() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");
        if (action.equalsIgnoreCase("SupplierList")){
            forward = LIST;
            try {
                request.setAttribute("suppliers", dao.getAllSupplier());
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else if (action.equalsIgnoreCase("SupplierView")){
            forward = VIEW;
            int supplierid = Integer.parseInt(request.getParameter("supplierid"));
            SupplierBean supplier = dao.getSupplierById(supplierid);
            request.setAttribute("supplier", supplier);
        } else if (action.equalsIgnoreCase("SupplierDelete")){
            int supplierid = Integer.parseInt(request.getParameter("supplierid"));
            dao.delete(supplierid);
            request.setAttribute("suppliers", dao.getAllSupplier());
        } else if (action.equalsIgnoreCase("SupplierEdit")){
            forward = EDIT;
            int supplierid = Integer.parseInt(request.getParameter("supplierid"));
            SupplierBean supplier = dao.getSupplierById(supplierid);
            request.setAttribute("supplier", supplier);
        } else {
            forward = ADD;
        }
        RequestDispatcher view = request.getRequestDispatcher(forward);
        view.forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        SupplierBean supplier = new SupplierBean();
        supplier.setSupplier_name(request.getParameter("supplier_name"));
        supplier.setSupplier_address(request.getParameter("supplier_description"));
        supplier.setSupplier_contact_num(request.getParameter("supplier_contact_num"));
        supplier.setSupplier_description(request.getParameter("supplier_description"));
        String supplierid = request.getParameter("supplier_id");
        if(supplierid == null || supplierid.isEmpty()) {
            try {
                dao.add(supplier);
            } catch (NoSuchAlgorithmException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } else{
            supplier.setSupplier_id(Integer.parseInt(supplierid));
            try {
                dao.edit(supplier);
            }
        }
    }
}

内容的提问来源于stack exchange,提问作者shafiq ruslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:02:08