1

I need to resolve this problem. I need to create a simple registration form using database, so I downloaded MySQL database. In the terminal ( MAC ) I create a new database

myDB

username: root

password: 123456789

At this point I create a table:

users

With this parameters:

firstname; lastname; username; password; email;

All of these are in VARCHAR (40).

Then I Create a new WebApplication on Eclipse, I have set Tomcat and also mysql-connector ( mysql-connector-java-8.0.11.jar ) and I add it on the path.

This is my code: registration.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>User Data</title>
</head>
<style>
div.ex {
    text-align: right width:300px;
    padding: 10px;
    border: 5px solid grey;
    margin: 0px
}
</style>
<body>
    <h1>Registration Form</h1>
    <div class="ex">
        <form action="RegistrationController" method="post">
            <table style="with: 50%">
                <tr>
                    <td>Firstname</td>
                    <td><input type="text" name="firstname" /></td>
                </tr>
                <tr>
                    <td>Lastname</td>
                    <td><input type="text" name="lastname" /></td>
                </tr>
                <tr>
                    <td>Username</td>
                    <td><input type="text" name="username" /></td>
                </tr>
                <tr>
                    <td>Password</td>
                    <td><input type="password" name="password" /></td>
                </tr>
                <tr>
                    <td>Email</td>
                    <td><input type="text" name="email" /></td>
                </tr>
            </table>
            <input type="submit" value="register" />
        </form>
        <br>
    </div>
</body>
</html>

And this is the RegistrationController.java

package it;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class UserDataServlet
 */
public class RegistrationController extends HttpServlet {

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  String firstname = request.getParameter("firstname");
  String lastname = request.getParameter("lastname");
  String username = request.getParameter("username");
  String password = request.getParameter("password");
  String email = request.getParameter("email");


  // validate given input
  if (firstname.isEmpty() || lastname.isEmpty() || username.isEmpty() || password.isEmpty() || email.isEmpty()) {
   RequestDispatcher rd = request.getRequestDispatcher("registration.jsp");
   out.println("<font color=red>Please fill all the fields</font>");
   rd.include(request, response);
  } else {

   try {
    Class.forName("com.mysql.jdbc.Driver");
    // loads mysql driver

    Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDB", "root", "123456789"); 

    String query = "insert into users values(?,?,?,?,?)";

    PreparedStatement ps = con.prepareStatement(query); // generates sql query

    ps.setString(1, firstname);
    ps.setString(2, lastname);
    ps.setString(3, username);
    ps.setString(4, password);
    ps.setString(5, email);

    ps.executeUpdate(); // execute it on test database
    System.out.println("successfuly inserted");
    ps.close();
    con.close();
   } catch (ClassNotFoundException | SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
   RequestDispatcher rd = request.getRequestDispatcher("home.jsp");
   rd.forward(request, response);
  }
 }
}

But if I run on eclipse I receive this error:

HTTP Status 404 – Not Found Type Status Report

Message /WebApplication/RegistrationController

Description The origin server did not find a current representation for > the target resource or is not willing to disclose that one exists.

my web.xml file

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>registration</display-name>
    <welcome-file-list>
        <welcome-file>registration.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <description></description>
        <display-name>RegistrationController</display-name>
        <servlet-name>RegistrationController</servlet-name>
        <servlet-class>it.RegistrationController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RegistrationController</servlet-name>
        <url-pattern>/RegistrationController</url-pattern>
    </servlet-mapping>
</web-app>

Obviously I have created also home.jsp. How can I solve this problem?

Project Image

LOGFILE


I also paste the Eclipse's console:

lug 05, 2018 2:50:55 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
AVVERTENZA: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:WebApplication' did not find a matching property.
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Server version:        Apache Tomcat/9.0.8
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Server built:          Apr 27 2018 19:32:00 UTC
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Server number:         9.0.8.0
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: OS Name:               Mac OS X
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: OS Version:            10.13.5
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Architecture:          x86_64
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Java Home:             /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/jre
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: JVM Version:           1.8.0_161-b12
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: JVM Vendor:            Oracle Corporation
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: CATALINA_BASE:         /Users/albertomiceli/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: CATALINA_HOME:         /Library/Tomcat
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dcatalina.base=/Users/albertomiceli/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dcatalina.home=/Library/Tomcat
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dwtp.deploy=/Users/albertomiceli/eclipse/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Djava.endorsed.dirs=/Library/Tomcat/endorsed
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMAZIONI: Command line argument: -Dfile.encoding=UTF-8
lug 05, 2018 2:50:55 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFORMAZIONI: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/albertomiceli/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]
lug 05, 2018 2:50:55 PM org.apache.coyote.AbstractProtocol init
INFORMAZIONI: Initializing ProtocolHandler ["http-nio-8080"]
lug 05, 2018 2:50:55 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMAZIONI: Using a shared selector for servlet write/read
lug 05, 2018 2:50:55 PM org.apache.coyote.AbstractProtocol init
INFORMAZIONI: Initializing ProtocolHandler ["ajp-nio-8009"]
lug 05, 2018 2:50:55 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMAZIONI: Using a shared selector for servlet write/read
lug 05, 2018 2:50:55 PM org.apache.catalina.startup.Catalina load
INFORMAZIONI: Initialization processed in 737 ms
lug 05, 2018 2:50:55 PM org.apache.catalina.core.StandardService startInternal
INFORMAZIONI: Starting service [Catalina]
lug 05, 2018 2:50:55 PM org.apache.catalina.core.StandardEngine startInternal
INFORMAZIONI: Starting Servlet Engine: Apache Tomcat/9.0.8
lug 05, 2018 2:50:58 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMAZIONI: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
lug 05, 2018 2:51:01 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMAZIONI: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
lug 05, 2018 2:51:01 PM org.apache.coyote.AbstractProtocol start
INFORMAZIONI: Starting ProtocolHandler ["http-nio-8080"]
lug 05, 2018 2:51:01 PM org.apache.coyote.AbstractProtocol start
INFORMAZIONI: Starting ProtocolHandler ["ajp-nio-8009"]
lug 05, 2018 2:51:01 PM org.apache.catalina.startup.Catalina start
INFORMAZIONI: Server startup in 5398 ms
Keyz23
  • 81
  • 2
  • 4
  • 11
  • Check for logs in logs folder and share the stack trace to better understand the issue – Aman Chhabra Jul 05 '18 at 13:41
  • @AmanChhabraThanks for the answer, I have update the post with LOGFILE. – Keyz23 Jul 05 '18 at 13:46
  • What URL you are trying? Is it /WebApplication/RegistrationController? Try /registration/RegistrationController – Aman Chhabra Jul 05 '18 at 13:57
  • @AmanChhabra I'm not deciding the url. I start the server and Tomcat does everything by himself, what do you advise me to do? Tomcat uses localhost:8080/WebApplication/RegistrationController. If I try localhost:8080/registration/RegistrationController I receive the same error ( but obviously change the message to /registration/RegistrationController ) – Keyz23 Jul 05 '18 at 14:04
  • I solve this problem ( the problem was the XML file in the wrong position ). But now if I add a user my MYSQL DB don't receive anything D: – Keyz23 Jul 05 '18 at 14:21
  • Yeah right... I replicated it on my local and the same was the issue. With MySql insertion issue, are you getting any exception. Also, you should close the connection in finally and not try – Aman Chhabra Jul 05 '18 at 14:48
  • @AmanChhabra Yes, I have this error : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver – Keyz23 Jul 05 '18 at 15:07
  • Please add jdbc driver jar in resources folder – Aman Chhabra Jul 05 '18 at 15:10
  • ok i have done it and now : com.mysql.cj.exceptions.InvalidConnectionAttributeException: whyyyyy! I try to resolve this problem from a week – Keyz23 Jul 05 '18 at 15:16
  • On which line are you getting this error now? – Aman Chhabra Jul 05 '18 at 15:26
  • It's about the time zone I believe. Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'CEST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support. – Keyz23 Jul 05 '18 at 15:30
  • Yeh may be this can help you : https://stackoverflow.com/questions/26515700/mysql-jdbc-driver-5-1-33-time-zone-issue – Aman Chhabra Jul 05 '18 at 15:34
  • 1
    Man, thanks you a lot. You help me to solve. I appreciate a lot your help. – Keyz23 Jul 05 '18 at 15:40

1 Answers1

0

As discussed, following were the issues, which have been sorted out:

1) web.xml was in the wrong path ( directly inside WebContent whereas it should be inside WEB-INF folder)

2) Mysql connection was throwing an error related to InvalidConnectionAttributeException which was occuring because of timezone and has been fixed as suggested in MySQL JDBC Driver 5.1.33 - Time Zone Issue

Aman Chhabra
  • 3,824
  • 1
  • 23
  • 39