-1

Please help me how to fix this registration problem on my java web aplication. Im trying to do this 7 days, but there is no way for me. Again please help! I think I have set everything you need to help me. Simply when I want to register, this problem, which has been irritating me for a long time, throws me out. Like I said, I've been trying to fix this for seven days, but I'm not doing very well. I came here to find a good man who can help me solve this problem. I would be very grateful to him!

User.java:

{
    package model;

public class User {
    private int privateID;
    private String firstname;
    private String lastname;
    private String username;
    private String password;
    
    public User() {
        
    }
    
    public User(int privateID, String firstname, String lastname, String username, String password) {
        this.privateID = privateID;
        this.firstname = firstname;
        this.lastname = lastname;
        this.username = username;
        this.password = password;
    }

    public int getPrivateID() {
        return privateID;
    }

    public void setPrivateID(int privateID) {
        this.privateID = privateID;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public String getPassword() {
        return password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

DBConnect.java:


package dao;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnect {

    public static Connection getConnecttion() {
        Connection cons = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            cons = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/medical", "root", "root");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return cons;
    }
}

UserDAO.java:


package dao;
import model.User;

public interface UserDAO {
    
    public void addUser(User u);
    
    public boolean checkUser(String username);
    
    public boolean login(String username, String password);
    
    public void updateUser(User u);
    
    public User getUser(String username);
    
}

UserDAOImpl.java:


package dao;

import com.mysql.jdbc.PreparedStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import model.User;

public class UserDAOImpl implements UserDAO {

    @Override
    public void addUser(User u) {
        Connection con = DBConnect.getConnecttion();
        String sql = "insert into user value (?,?,?,?,?)";
        PreparedStatement ps;

        try {
            ps = (PreparedStatement) con.prepareStatement(sql);
            ps.setInt(1, u.getPrivateID());
            ps.setString(2, u.getFirstname());
            ps.setString(3, u.getLastname());
            ps.setString(4, u.getUsername());
            ps.setString(5, u.getPassword());
            ps.executeUpdate();
            con.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    @Override
    public boolean checkUser(String username) {
        Connection con = DBConnect.getConnecttion();
        String sql = "select * from user where username='" + username + "'";
        PreparedStatement ps;

        try {
            ps = (PreparedStatement) con.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                con.close();
                return true;
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    @Override
    public boolean login(String username, String password) {
        Connection con = DBConnect.getConnecttion();
        String sql = "select * from user where username='" + username + "' and password='" + password + "'";
        PreparedStatement ps;

        try {
            ps = (PreparedStatement) con.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                con.close();
                return true;
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    @Override
    public void updateUser(User u) {
        Connection con = DBConnect.getConnecttion();
        String sql = "update user set privateID=?, firstname=?, lastname=?, username=?, password=?";

        try {
            PreparedStatement ps = (PreparedStatement) con.prepareStatement(sql);
            ps.setInt(1, u.getPrivateID());
            ps.setString(2, u.getFirstname());
            ps.setString(3, u.getLastname());
            ps.setString(4, u.getUsername());
            ps.setString(5, u.getPassword());
            ps.executeUpdate();
            con.close();

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

    @Override
    public User getUser(String name) {
        Connection con = DBConnect.getConnecttion();
        String sql = "select * from user where username='"+name+"'";
        User u = new User();
        
        try {
            PreparedStatement ps = (PreparedStatement) con.prepareStatement(sql);
            ResultSet rs = ps.executeQuery();
            while(rs.next()) {
                int privateID = rs.getInt("privateID");
                String firstname = rs.getString("firstname");
                String lastname = rs.getString("lastname");
                String username = rs.getString("username");
                String password = rs.getString("password");
                
                u = new User(privateID, firstname, lastname, username, password);
            }
            con.close();
        } catch (SQLException ex) {
          ex.printStackTrace();
        }
        return u;
    }
}

RegisterServlet.java:


/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package controler;

import dao.UserDAOImpl;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.User;

/**
 *
 * @author Veljko
 */
public class RegisterServlet extends HttpServlet {
    private UserDAOImpl userDAO = new UserDAOImpl();
    
    
    public RegisterServlet() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        
        String firstname = req.getParameter("firstname");
        String lastname = req.getParameter("lastname");
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        
        
        String err = "";
        String url = "/register.jsp";
        
        
        if(firstname.equals("") || lastname.equals("") || username.equals("") || password.equals("")) {
            err+="Potrebno je popuniti sva polja!";
        } else {
            if(userDAO.checkUser(username) == true) {
                err+="Username vec postoji!";
            } 
        }
        if(err.length()>0) {
            req.setAttribute("err", err);
        }
        
        try {
            if (err.length() == 0) {
                userDAO.addUser(new User(0, firstname, lastname, username, password));
                userDAO.login(username, password);
                Cookie loginCookie = new Cookie("username", username);
                loginCookie.setMaxAge(30*60);
                resp.addCookie(loginCookie);
                resp.sendRedirect("index.jsp");
            } else {
                url = "/register.jsp";
                RequestDispatcher rd = getServletContext().getRequestDispatcher(url);
                rd.forward(req, resp);
            }
        } catch (Exception e) {
            e.printStackTrace();
            resp.sendRedirect("/register.jsp");
        }
    }        
}

register.jsp:

    
<%@include file="header.html" %>
<body>
    <%

    String err = "";
    if(request.getAttribute("err") !=null) {
        err = (String) request.getAttribute("err");
    }

        %>
    
    <main>
        <div class="container register">
            <div class="row">
                <div class="col-md-3 register-left">
                    <img src="https://image.ibb.co/n7oTvU/logo_white.png" alt=""/>
                    <h3>Dobrodosli</h3>
                <a href="login.jsp" class="btn -btn">Login</a>
                </div>
                <div class="col-md-9 register-right">
                    <div class="tab-content" id="myTabContent">
                        <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
                            <h3 class="register-heading">Registracija</h3>
                            <div class="row register-form">
                                <div class="col-md-6">
                                    <form action="RegisterServlet" method="post">
                                        <li style="color: red"><%=err%></li>
                                        <input type="text" class="form-control" name="firstname" placeholder="First Name *" value="" />
                                        <input type="text" class="form-control" name="lastname" placeholder="Last Name *" value="" />
                                        <input type="text" class="form-control" name="username" placeholder="Username *" value="" />
                                        <input type="password" class="form-control" name="password" placeholder="Password *" value="" />
                                        <input type="submit" class="btnRegister"  value="Register"/>
                                        </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </main>
<%@include file="footer.html" %>

Error:

10-Jul-2020 03:53:06.169 SEVERE [http-nio-8084-exec-69] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [RegisterServlet] in context with path [/ITAcademy] threw exception
java.lang.NullPointerException
at dao.UserDAOImpl.checkUser(UserDAOImpl.java:40)
at controler.RegisterServlet.doPost(RegisterServlet.java:54)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

Z4-tier
  • 7,287
  • 3
  • 26
  • 42

1 Answers1

0

The error log trying to indicate that con using at UserDAOImpl.java line 40 is null. Trace up to the class DBConnect, there should be an error that occurred when getting the connection. (Just check the stack trace printed by the catch block. Are you missing the mysql driver?

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Minh Duy
  • 127
  • 5