0

just a newbie here. I Just created a simple registration page using MVC framework (JSP and Servlets) and register it in the database, when i tried to run it, i got an error

Exception report:
    SEVERE: Servlet.service() for servlet [Controller.RegistrationServlet] in context with path [/RegistrationApp] threw exception
    java.lang.NullPointerException
        at ModelDb.ModelDBConnect.registerUser(ModelDBConnect.java:55)
        at Controller.RegistrationServlet.doPost(RegistrationServlet.java:63)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

Here's my source code:

Registrationview.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Registration Form</title>
</head>
<style>
body {background-color: #101010 }
h3 {color:white}
td{color: white}
</style>
<body>
<h3>Registration Page</h3>
<br>
<form action="Registration" method="post">
<table>
<tr>
<td>Employee Id:</td>
<td><input type="text" name="EMPLOYEE_ID"> Job Id:</td><td><input type="text" name="JOB_ID"></td>
<tr>
<td>First Name:</td>
<td><input type="text" name="FIRST_NAME"> Salary:</td><td><input type="text" name="SALARY"></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type="text" name="LAST_NAME"> Commission:</td><td><input type="text" name="COMMISSION_PCT"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="EMAIL"> Manager Id:</td><td><input type="text" name="MANAGER_ID"></td>
</tr>
<tr>
<td>Phone Number:</td>
<td><input type="text" name="PHONE_NUMBER"> Department Id:</td><td><input type="text" name="DEPARTMENT_ID"></td>
</tr>
<tr>
<td>Hire Date:</td>
<td><input type="text" name="HIRE_DATE">
</tr>
</table><br>
<input type="submit" value="Register">
</form>

</body>
</html>

Controller:

RegistrationServlet

package Controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Model.RegistrationBean;
import ModelDb.ModelDBConnect;


@WebServlet("/Registration")
public class RegistrationServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 1) Retrieve all parameters from JSP Page

        String EMPLOYEE_ID = request.getParameter("EMPLOYEE_ID");
        String FIRST_NAME = request.getParameter("FIRST_NAME");
        String LAST_NAME = request.getParameter("LAST_NAME");
        String EMAIL= request.getParameter("EMAIL");
        String PHONE_NUMBER = request.getParameter("PHONE_NUMBER");
        String HIRE_DATE = request.getParameter("HIRE_DATE");
        String JOB_ID = request.getParameter("JOB_ID");
        String SALARY = request.getParameter("SALARY");
        String COMMISSION_PCT = request.getParameter("COMMISSION_PCT");
        String MANAGER_ID = request.getParameter("MANAGER_ID");
        String DEPARTMENT_ID = request.getParameter("DEPARTMENT_ID");

        //2) set all the values in the model class object

        RegistrationBean rb = new RegistrationBean();

        rb.setEMPLOYEE_ID(EMPLOYEE_ID);
        rb.setFIRST_NAME(FIRST_NAME);
        rb.setLAST_NAME(LAST_NAME);
        rb.setEMAIL(EMAIL);
        rb.setPHONE_NUMBER(PHONE_NUMBER);
        rb.setHIRE_DATE(HIRE_DATE);
        rb.setJOB_ID(JOB_ID);
        rb.setSALARY(SALARY);
        rb.setCOMMISSION_PCT(COMMISSION_PCT);
        rb.setMANAGER_ID(MANAGER_ID);
        rb.setDEPARTMENT_ID(DEPARTMENT_ID);

        // 3) Call a method from ModelDBConnect class to insert data in the table


        String sql ="Insert into EMPLOYEES" + "(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID) VALUES" +
        "(?,?,?,?,?,?,?,?,?,?,?)";

        int i = ModelDBConnect.registerUser(rb, sql);

        if (i != 0) {
            System.out.println("value inserted");
        }
        else {
            System.out.println("value not inserted");
        }


    }

}

JavaBean

RegistrationBean

package Model;

public class RegistrationBean {

    private String EMPLOYEE_ID;
    private String FIRST_NAME;
    private String LAST_NAME;
    private String EMAIL;
    private String PHONE_NUMBER;
    private String HIRE_DATE;
    private String JOB_ID;
    private String SALARY;
    private String COMMISSION_PCT;
    private String MANAGER_ID;
    private String DEPARTMENT_ID;

    public String getEMPLOYEE_ID() {
        return EMPLOYEE_ID;
    }
    public void setEMPLOYEE_ID(String eMPLOYEE_ID) {
        EMPLOYEE_ID = eMPLOYEE_ID;
    }
    public String getFIRST_NAME() {
        return FIRST_NAME;
    }
    public void setFIRST_NAME(String fIRST_NAME) {
        FIRST_NAME = fIRST_NAME;
    }
    public String getLAST_NAME() {
        return LAST_NAME;
    }
    public void setLAST_NAME(String lAST_NAME) {
        LAST_NAME = lAST_NAME;
    }
    public String getEMAIL() {
        return EMAIL;
    }
    public void setEMAIL(String eMAIL) {
        EMAIL = eMAIL;
    }
    public String getPHONE_NUMBER() {
        return PHONE_NUMBER;
    }
    public void setPHONE_NUMBER(String pHONE_NUMBER) {
        PHONE_NUMBER = pHONE_NUMBER;
    }
    public String getHIRE_DATE() {
        return HIRE_DATE;
    }
    public void setHIRE_DATE(String hIRE_DATE) {
        HIRE_DATE = hIRE_DATE;
    }
    public String getJOB_ID() {
        return JOB_ID;
    }
    public void setJOB_ID(String jOB_ID) {
        JOB_ID = jOB_ID;
    }
    public String getSALARY() {
        return SALARY;
    }
    public void setSALARY(String sALARY) {
        SALARY = sALARY;
    }
    public String getCOMMISSION_PCT() {
        return COMMISSION_PCT;
    }
    public void setCOMMISSION_PCT(String cOMMISSION_PCT) {
        COMMISSION_PCT = cOMMISSION_PCT;
    }
    public String getMANAGER_ID() {
        return MANAGER_ID;
    }
    public void setMANAGER_ID(String mANAGER_ID) {
        MANAGER_ID = mANAGER_ID;
    }
    public String getDEPARTMENT_ID() {
        return DEPARTMENT_ID;
    }
    public void setDEPARTMENT_ID(String dEPARTMENT_ID) {
        DEPARTMENT_ID = dEPARTMENT_ID;
    }

}

Connect to database:

ModelDBConnect.java

package ModelDb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import Model.RegistrationBean;

public class ModelDBConnect {

    // JDBC driver name and database

    static final String JDBC_Driver = "oracle.jdbc.OracleDriver";
    static final String DB_URL = "jdbc:oracle:thin:@//localhost:1521/XE";

    // Database credentials

    static final String USERNAME = "hr";
    static final String PASSWORD = "hr1";

    // method to connect to the database

    private static Connection connect() {

        Connection con = null;

        // Register the JDBC Driver

        try {
            Class.forName("oracle.jdbc.OracleDriver");

            // open a connection
            System.out.println("Connection to the database");

            con=DriverManager.getConnection(DB_URL, USERNAME, PASSWORD);

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        return con;
    }

    public static int registerUser(RegistrationBean rb, String sql) {
        int i = 0;

        Connection con = connect();
        try {
            PreparedStatement ps =con.prepareStatement(sql);-------Error here!
            ps.setString(1, rb.getEMPLOYEE_ID());
            ps.setString(2, rb.getFIRST_NAME());
            ps.setString(3, rb.getLAST_NAME());
            ps.setString(4, rb.getEMAIL());
            ps.setString(5, rb.getPHONE_NUMBER());
            ps.setString(6, rb.getHIRE_DATE());
            ps.setString(7, rb.getJOB_ID());
            ps.setString(8, rb.getSALARY());
            ps.setString(9, rb.getCOMMISSION_PCT());
            ps.setString(10, rb.getMANAGER_ID());
            ps.setString(11, rb.getDEPARTMENT_ID());

            i=ps.executeUpdate();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        return i;

    }


}

Thanks!

Mark Rotteveel
  • 100,966
  • 191
  • 140
  • 197
Argel
  • 11
  • 1
  • 1
  • 4

1 Answers1

1

I would guess that your Connection con = connect(); is being assigned null, due to a failure in your connect() method.

Instead of throwing an exception there upon failure, you are simply printing the stack trace - then continuing as if nothing happened. ("OK, now what?")

Please find and review the generated stack trace for some additional clues as to why the connection is failing. It could be an invalid connection string, username/password, or an issue with your local database itself.

You would be best to re-throw the exception, or to not catch it at all and declare that it can be thrown as part of the method. Then you can rely upon connect() to either return a valid connection - or to fail with an exception.

As-is, you would first need to check con for null before attempting to use it. As-is, the NullPointerException is being thrown when trying to call .prepareStatement on con, which is null.

ziesemer
  • 27,712
  • 8
  • 86
  • 94
  • Hi ziesemer, thanks for the help, i just reviewed the stack trace and i found out why the connection is failing..i just followed this the class "oracle.jdbc.OracleDriver" is getting a java.lang.ClassNotFoundExceptioni i figured out that there's no ojdbc6.jar file in it.. so i added it on deployment assembly tab and it worked! Thanks! – Argel Oct 26 '15 at 05:43