1

I am going through a tutorial and trying to build a very simple MVC web application with MySql. My IDE is Eclipse. I want to insert to database but I cannot tell where the problem is coming from either my Servlet or JSP I am running out of ideas. What is not right?. Every thing seems fine too.

servlet.java

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    doGet(request, response);
    PrintWriter out = response.getWriter();
    UsersDAO dao =new UsersDAO(); // data access object
    String useraction = request.getParameter("useraction");

    String userId = request.getParameter("userId");
    String fullName =request.getParameter("fullName");
    String userName = request.getParameter("userName");
    String passWord = request.getParameter("passWord");
    String bankBranch = request.getParameter("bankBranch");
    String department = request.getParameter("department");
    String userPermission = request.getParameter("userPermission");
    String amtGroupID = request.getParameter("amtGroupID");
    String roleId = request.getParameter("roleId"); 
    String dateCreated = request.getParameter("dateCreated");

    if (useraction != null && useraction.equals("create")) {
        Users adduser =new Users(fullName,userName, passWord, bankBranch, department,0, dateCreated, 0);
        out.print("<p style=\"color:red\">User Added</p>");
        RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/system/registeruser.jsp");
        view.forward(request, response);
        dao.create(adduser);
    }else{
        out.print("<p style=\"color:red\">Sorry username or password error</p>");
        RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/system/registeruser.jsp");
        view.forward(request, response);
    }
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String action = request.getParameter("action");

        String path = request.getParameter("path");

        if (path != null && path.equals("register")) {
            RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/system/registeruser.jsp");
            view.forward(request, response);
        } else if (path != null && path.equals("usermang")) {
            RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/system/manageuser.jsp");
            view.forward(request, response);
        } else if (path != null && path.equals("return")) {
            RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/grcon/grcon.jsp");
            view.forward(request, response);
        } else if (action != null && action.equals("Login")) {
            RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/grcon/grcon.jsp");
            view.forward(request, response);
        } else if (path != null && path.equals("journal")) {
            RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/grcon/ejournal.jsp");
            view.forward(request, response);
        }else if (path != null && path.equals("recon")) {
            RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/grcon/reconcil.jsp");
            view.forward(request, response);
        }
        else {
            PrintWriter out = response.getWriter();
            out.print("Served at: " + request.getContextPath());
            RequestDispatcher view = request.getRequestDispatcher("/WEB-INF/views/system/index.jsp");
            view.forward(request, response);
        }
}

JSP code

<% UsersDAO dao = new UsersDAO();%>
  <form  action="System" method="post" class="form-horizontal form-label-left" novalidate  >
    <span class="section">User Info</span>
      <div class="item form-group">
    <label class="control-label col-md-3 col-sm-3 col-xs-12"for="fullName">Full Name <span class="required">*</span>
    </label><div class="col-md-6 col-sm-6 col-xs-12">
    <input id="fullName" class="form-control col-md-7 col-xs-12"
    data-validate-length-range="6" data-validate-words="2"
    name="fullName" placeholder="both name(s) e.g Jon Doe"
    required="required" type="text" />
    </div>
    </div>
    <div class="item form-group">
    <label class="control-label col-md-3 col-sm-3 col-xs-12"for="userName">User Name <span class="required">*</span>
    </label>
    <div class="col-md-6 col-sm-6 col-xs-12">
    <input type="text" id="userName" name="userName"required="required" class="form-control col-md-7 col-xs-12" />
    </div>
    </div>
    <div class="item form-group">
    <label for="passWord" class="control-label col-md-3">Password</label>
    <div class="col-md-6 col-sm-6 col-xs-12">
     <input id="passWord" type="password" name="passWord"data-validate-length="6,10"
    class="form-control col-md-7 col-xs-12" required="required" />
     </div>
     </div>
 </form>

Error log

SEVERE: Servlet.service() for servlet [controller.System] in context with path [/G-Recon] threw exception
java.lang.IllegalStateException: Cannot forward after response has been committed
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:327)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:317)
    at controller.System.doPost(System.java:92)
    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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
    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:141)
    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:521)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    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:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Vinoth Krishnan
  • 2,925
  • 6
  • 29
  • 34
lord-ivan
  • 73
  • 2
  • 3
  • 12

2 Answers2

0

Change

view.forward(request, response);
dao.create(adduser);

to

dao.create(adduser);//first create user
view.forward(request, response);//later forward the req

There is no need of calling doGet(request, response);.

SatyaTNV
  • 4,137
  • 3
  • 15
  • 31
0

java.lang.IllegalStateException: Cannot forward after response has been committed

Remove your out.println() code as you want to actually forward to different url.

You cannot forward if you have already written something to response stream.

Bhushan Bhangale
  • 10,921
  • 5
  • 43
  • 71