I try using the DAO
design pattern on Servlets to store user input to MongoDB. Although found some useful hints on this post, and also this post. No doubt I got NullpointException. I wondered because I didn't create a collection and document to "insert" user input in my method on DaoImpl
or something I don't understand how to work between Servlet and the DaoImpl class
Here is the UserDAO
public interface UserDao {
List<User> getAllUsers();
void save(User user);
void updateUer(User user);
void deleteUser(User user);
}
The DaoImpl, which I think is causing the NullPointException and want to fix it and doubt if here to connect to the database.
public class UserDaoImpl implements UserDao {
@Override
public void save(User user) {
if (user == null) {
System.out.println("not working!!!!!!!");
} else {
user.setName(user.getName());
user.setEmail(user.getEmail());
user.setPassword(user.getPassword());
}
// connection the db in here or in the Servlets controller?
}
The Servlet Controller
public class RegisterServlet extends HttpServlet {
private UserDao userDao;
private User user;
public RegisterServlet(User user) {
this.user = user;
}
public RegisterServlet(UserDao userDao) {
this.userDao = userDao;
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Collect to database
MongoDatabase mdb = dBUtils.getMongoDB();
assert mdb != null;
MongoCollection<Document> collection = mdb.getCollection("Users");
userDao.save(user);
}
Error Msg
Type Exception Report
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
java.lang.NullPointerException
uts.asd.controller.RegisterServlet.doPost(RegisterServlet.java:54)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.