What causes this? This appears to be a very comon error
java.lang.NullPointerException
at dao.impl.ProjectDAOImpl.getByName(ProjectDAOImpl.java:57)
at service.impl.ProjectServiceImpl.getByName(ProjectServiceImpl.java:40)
at servlet.RegistrationServlet.doPost(RegistrationServlet.java:27)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:615)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
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)
My web.xml
and RegistrationServlet
looks like:
<web-app>
<display-name>Archetype Created Web Application</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
import lombok.SneakyThrows;
import model.Project;
import org.apache.log4j.Logger;
import service.ProjectService;
import service.impl.ProjectServiceImpl;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/registration")
public class RegistrationServlet extends HttpServlet {
private ProjectService projectService;
private static final Logger logger = Logger.getLogger(RegistrationServlet.class);
public RegistrationServlet() {
projectService = new ProjectServiceImpl();
}
@SneakyThrows
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
String name = req.getParameter("name");
if (projectService.getByName(name) == null) {
logger.info("Registration new project");
String password = req.getParameter("password");
int budget = Integer.parseInt(req.getParameter("budget"));
if (!name.isEmpty() && !password.isEmpty() && budget != 0) {
Project project = new Project(name, password, budget);
projectService.create(project);
logger.info("Project was registered : " + project);
req.getRequestDispatcher("cabinet.jsp").forward(req, resp);
}
} else {
logger.info("Project with name " + name + " already registered! Redirection to login page...");
req.getRequestDispatcher("login.jsp").forward(req, resp);
}
}
}