Ошибка java.lang.NullPointerException при отправке формы - PullRequest
0 голосов
/ 01 июня 2018

Это ошибка, которую я получил, когда отправил форму.Ошибка HTTP Status 500.

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)

Всякий раз, когда я отправляю форму.В строке dao.add (поставщик) указано ошибка java.lang.NullPointerException.Я проверяю все свои входные данные в текстовом поле, и оно возвращает значение, за исключением поставщика, потому что я хочу отправить форму.Как я могу решить эту проблему?

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);
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    forward = LIST;
    RequestDispatcher view = request.getRequestDispatcher(forward);
    try {
        request.setAttribute("supplier", dao.getAllSupplier());
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    view.forward(request, response);
}

}

** ОБНОВЛЕНО

Извините, это моя страница ProductDAO.Добавьте метод с ошибкой.Я установил свой product_id в базе данных для автоинкрементов.

public class ProductDAO {
    static Connection currentCon = null;
    static Statement stmt=null;
    static ResultSet rs = null; 
    static PreparedStatement ps=null;

    static String  product_name, product_description, product_ori_price, product_sell_price, product_profit, product_quantity, product_supplier;
    static int product_id;

    //add new product (register)
    public void add(ProductBean bean) throws NoSuchAlgorithmException{

        product_name = bean.getProduct_name();
        product_description = bean.getProduct_description();
        product_ori_price = bean.getProduct_ori_price();
        product_sell_price = bean.getProduct_sell_price();
        product_profit = bean.getProduct_profit();
        product_quantity = bean.getProduct_quantity();
        product_supplier = bean.getProduct_supplier();     

        try {
            currentCon = ConnectionManager.getConnection();
            ps=currentCon.prepareStatement("insert into products(product_name, product_description, product_ori_price, product_sell_price, product_profit, product_quantity, product_supplier)values(?,?,?,?,?,?,?)");
            ps.setString(1,product_name);
            ps.setString(2,product_description);
            ps.setString(3,product_ori_price); 
            ps.setString(4,product_sell_price);
            ps.setString(5,product_profit);
            ps.setString(6,product_quantity);
            ps.setString(7,product_supplier);
            ps.execute();

            System.out.println("Your product name is " + product_name);
            System.out.println("Your product price is " + product_ori_price);

        }

        catch (Exception ex) {
            System.out.println("failed: An Exception has occurred! " + ex);
        }

        finally {
            if (ps != null) {
                try {
                    ps.close();
                } catch (Exception e) {
                }
                ps = null;
            }

            if (currentCon != null) {
                try {
                    currentCon.close();
                } catch (Exception e) {
                }
                currentCon = null;
            }
        }
    }

    public void edit(ProductBean bean) throws NoSuchAlgorithmException {

        product_name = bean.getProduct_name();
        product_description = bean.getProduct_description();
        product_ori_price = bean.getProduct_ori_price();
        product_sell_price = bean.getProduct_sell_price();
        product_profit = bean.getProduct_profit();
        product_quantity = bean.getProduct_quantity();
        product_supplier = bean.getProduct_supplier();   

        String searchQuery = "UPDATE products SET product_name='" + product_name + "', product_description='" + product_description + "', product_ori_price='" + product_ori_price + "', product_sell_price= '"+ product_sell_price + "' , product_profit='" +product_profit+ "' , product_quantity='" +product_quantity+ "' , product_supplier= '"+product_supplier+"'  WHERE product_id = '" + product_id + "'";

        try {

            currentCon = ConnectionManager.getConnection();
            stmt = currentCon.createStatement();
            stmt.executeUpdate(searchQuery);

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public void delete(int product_id) {
        try {
            PreparedStatement preparedStatement = currentCon.prepareStatement("delete from products where product_id=?");
            // Parameters start with 1
            preparedStatement.setInt(1, product_id);
            preparedStatement.executeUpdate();

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    //list order 
    public List<ProductBean> getAllProduct(){

      List<ProductBean> products = new ArrayList<ProductBean>();

      try {
        currentCon = ConnectionManager.getConnection();
        stmt = currentCon.createStatement();

          String sql = "select * from products";
          ResultSet rs = stmt.executeQuery(sql);

          while (rs.next()) {
              ProductBean product = new ProductBean();
              product.setProduct_id(rs.getInt("product_id"));
              product.setProduct_name(rs.getString("product_name"));
              product.setProduct_ori_price(rs.getString("product__ori_price"));
              product.setProduct_sell_price(rs.getString("product_sell_price"));
              product.setProduct_profit(rs.getString("product_profit"));
              product.setProduct_quantity(rs.getString("product_quantity"));
              products.add(product);
          }

      } catch (SQLException e) {
          e.printStackTrace();
      }


      return products;
    }

  //get product by productid
    public ProductBean getProductById(int productid) {
        ProductBean product = new ProductBean();
        try {
            currentCon = ConnectionManager.getConnection();
            ps=currentCon.prepareStatement("select * from products where product_id=?");

            ps.setInt(1, productid);
            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                  product.setProduct_id(rs.getInt("product_id"));
                  product.setProduct_name(rs.getString("product_name"));
                  product.setProduct_description(rs.getString("product_description"));
                  product.setProduct_ori_price(rs.getString("product__ori_price"));
                  product.setProduct_sell_price(rs.getString("product_sell_price"));
                  product.setProduct_profit(rs.getString("product_profit"));
                  product.setProduct_quantity(rs.getString("product_quantity"));
                  product.setProduct_supplier(rs.getString("product_supplier"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return product;
    }

}

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

SupplierDAO это класс ??Затем используйте хотя бы следующий код:

private SupplierDAO dao= new SupplierDAO();

Если это интерфейс, тогда используйте new для класса имплантации.

0 голосов
/ 01 июня 2018

Ваша проблема исходит из этого:

private SupplierDAO dao;

Удалите эту строку и создайте ее экземпляр в вашем doGet:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
SupplierDAO dao = new SupplierDAO();
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...