-1

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);
        }
    }
}
BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555

1 Answers1

0

You have to check null about parameter "name". Like this

String name = "";
if (null != request.getParameter("name")) {
    name = request.getParameter("name");
}
Jang-Ho Bae
  • 498
  • 5
  • 19