java如何在servlet中使用DAO设计模式appoarch将用户输入存储到MongoDB?
我尝试在servlet上使用DAO
设计模式将用户输入存储到MongoDB。虽然在这个post和这个post上发现了一些有用的提示。毫无疑问,我得到了一个例外。我很好奇,因为我没有创建一个集合和文档来在DaoImpl
上的方法中“插入”用户输入,或者我不知道如何在Servlet和DaoImpl类之间工作
这是UserDAO
public interface UserDao {
List<User> getAllUsers();
void save(User user);
void updateUer(User user);
void deleteUser(User user);
}
DaoImpl,我认为它导致了NullPointException,希望修复它并怀疑这里是否连接到数据库
公共类UserDaoImpl实现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?
}
Servlet控制器
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);
}
错误消息
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.
# 1 楼答案
我调查并遵循这个post建议,最终可以将数据存储到MongoDB
这就是我所做的
UserDaoImpl类中的SaveUser方法
Servlet类