I have been working on this for the past few hours but I can't seem to figure out what is wrong. When I try to register a user, all I get is a blank servlet page (with no success message and no data gets inserted into the table.
As shown below the data does not get inserted and there is a blank register screen. XAMP is running fine too
register.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Register</title>
<style>
.container{
border: 1px solid #29465B;
border-radius: 1rem;
margin-left: 3rem;
margin-top: 1rem;
padding: 2rem;
padding-right: -200rem;
width: 30%;
margin-bottom: 2rem;
}
form{
display: flex;
flex-direction: column;
justify-content: center;
}
</style>
</head>
<body>
<%@ include file = "header.jsp" %>
<form action="RegisterServlet" method="post">
<div class="container">
<h2>Register</h2>
<div class="input-container">
<label style="margin-right: 2em;">Name:</label><br><input style="width: 90%;" type="text" name="yourName" size="25">
</div>
<div class="input-container">
<label style="margin-right: 2em;">Username:</label><br><input style="width: 90%;" type="text" name="yourUserName" size="20">
</div>
<div class="input-container">
<label style="margin-right: 2em;">Password:</label><br><input style="width: 90%;" type="password" name="yourPassowrd" size="20">
</div>
<div class="input-container">
<label style="margin-right: 2em;">Email:</label><br><input style="width: 90%;" type="text" name="yourEmail" size="20">
</div>
<br>
<input style="font-size: 2em; border-radius: 0.5em; padding: 0.3em;" type="submit" value=" Register! " />
<br><br>
<a class="user" href="login.jsp">Already have an Account? Login here</a>
</div>
</form>
<%@ include file = "footer.jsp" %>
</body>
</html>
RegisterServlet.java
package com.dvops.maven.eclipse;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//Import these libraries from java.io and java.sql
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
/**
* Servlet implementation class RegisterServlet
*/
@WebServlet("/RegisterServlet")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RegisterServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
//Step 1: Initialize a PrintWriter object to return the html values via the response
PrintWriter out = response.getWriter();
//Step 2: retrieve the four parameters from the request from the web form
String n = request.getParameter("yourName");
String p = request.getParameter("yourUserName");
String e = request.getParameter("yourPassword");
String c = request.getParameter("yourEmail");
//Step 3: attempt connection to database using JDBC, you can change the username and password accordingly using the phpMyAdmin > User Account dashboard
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3308/userdetails", "root", "password");
//Step 4: implement the sql query using prepared statement (https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)
PreparedStatement ps = con.prepareStatement("insert into USERDETAILS values(?,?,?,?)");
//Step 5: parse in the data retrieved from the web form request into the prepared statement accordingly
ps.setString(1, n);
ps.setString(2, p);
ps.setString(3, e);
ps.setString(4, c);
//Step 6: perform the query on the database using the prepared statement
int i = ps.executeUpdate();
//Step 7: check if the query had been successfully execute, return “You are successfully registered” via the response,
if (i > 0){
PrintWriter writer = response.getWriter();
writer.println("<h1>" + "You have successfully registered an account!" +
"</h1>");
writer.close();
}
}
//Step 8: catch and print out any exception
catch (Exception exception) {
System.out.println(exception);
out.close();
}
doGet(request, response);
}
}