0

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

Data does not get inserted in pHpAdmin Register page Blank servlet page after clicking on register XAMP running fine

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);
    }

}

Update: I found this error in console enter image description here

0 Answers0