This post explains the Registration applications in Java using Servlet, JSP, and MySQL database servers. This Java registration form follows Model View Controller (MVC) architecture. Let us understand what is MVC and how this should be used while developing any application.
For Login application in java, refer to the post Login application in Java using MVC
The Model View Controller (MVC) architecture can be best explained with the help of the following diagram.

We are making use of Eclipse Integrated development environment(IDE) for this Java Registration Application. To follow the basic coding standards, I have created my folder structure as shown in the following diagram.
Login Applications in Java:
Any Registration or Login application always begins with views. It can be a page in HTML, JSP, PHP, VB, or any other language. Our Java Registration application begins with Register.jsp and from Register.jsp we will call RegisterServlet.java class.
Register.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>Register</title>
<script>
function validate()
{
var fullname = document.form.fullname.value;
var email = document.form.email.value;
var username = document.form.username.value;
var password = document.form.password.value;
var conpassword= document.form.conpassword.value;
if (fullname==null || fullname=="")
{
alert("Full Name can't be blank");
return false;
}
else if (email==null || email=="")
{
alert("Email can't be blank");
return false;
}
else if (username==null || username=="")
{
alert("Username can't be blank");
return false;
}
else if(password.length<6)
{
alert("Password must be at least 6 characters long.");
return false;
}
else if (password!=conpassword)
{
alert("Confirm Password should match with the Password");
return false;
}
}
</script>
</head>
<body>
<center><h2>Java Registration application using MVC and MySQL </h2></center>
<form name="form" action="RegisterServlet" method="post" onsubmit="return validate()">
<table align="center">
<tr>
<td>Full Name</td>
<td><input type="text" name="fullname" /></td>
</tr>
<tr>
<td>Email</td>
<td><input type="text" name="email" /></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>Confirm Password</td>
<td><input type="password" name="conpassword" /></td>
</tr>
<tr>
<td><%=(request.getAttribute("errMessage") == null) ? ""
: request.getAttribute("errMessage")%></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Register"></input><input
type="reset" value="Reset"></input></td>
</tr>
</table>
</form>
</body>
</html>

RegisterServlet.java
package com.mvc.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mvc.bean.RegisterBean;
import com.mvc.dao.RegisterDao;
public class RegisterServlet extends HttpServlet {
public RegisterServlet() {
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//Copying all the input parameters in to local variables
String fullName = request.getParameter("fullname");
String email = request.getParameter("email");
String userName = request.getParameter("username");
String password = request.getParameter("password");
RegisterBean registerBean = new RegisterBean();
//Using Java Beans - An easiest way to play with group of related data
registerBean.setFullName(fullName);
registerBean.setEmail(email);
registerBean.setUserName(userName);
registerBean.setPassword(password);
RegisterDao registerDao = new RegisterDao();
//The core Logic of the Registration application is present here. We are going to insert user data in to the database.
String userRegistered = registerDao.registerUser(registerBean);
if(userRegistered.equals("SUCCESS")) //On success, you can display a message to user on Home page
{
request.getRequestDispatcher("/Home.jsp").forward(request, response);
}
else //On Failure, display a meaningful message to the User.
{
request.setAttribute("errMessage", userRegistered);
request.getRequestDispatcher("/Register.jsp").forward(request, response);
}
}
}
To summarize RegisterServlet.java flow :
1. Assign all the inputs(user details) to local variables.
2. Call RegisterBean.java to set all the user details using java setters.
3. Next, go to RegisterDao.java where you are just going to insert user details into the database.
4. Once it is successful, you are displaying a successful message.
RegisterDao.java
Data Access Object – It focuses on business logic with database connections and operations.
Here the RegisterDao.java code makes a connection with the Database layer and inserts user details into the database.
package com.mvc.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mvc.bean.RegisterBean;
import com.mvc.util.DBConnection;
public class RegisterDao {
public String registerUser(RegisterBean registerBean)
{
String fullName = registerBean.getFullName();
String email = registerBean.getEmail();
String userName = registerBean.getUserName();
String password = registerBean.getPassword();
Connection con = null;
PreparedStatement preparedStatement = null;
try
{
con = DBConnection.createConnection();
String query = "insert into users(SlNo,fullName,Email,userName,password) values (NULL,?,?,?,?)"; //Insert user details into the table 'USERS'
preparedStatement = con.prepareStatement(query); //Making use of prepared statements here to insert bunch of data
preparedStatement.setString(1, fullName);
preparedStatement.setString(2, email);
preparedStatement.setString(3, userName);
preparedStatement.setString(4, password);
int i= preparedStatement.executeUpdate();
if (i!=0) //Just to ensure data has been inserted into the database
return "SUCCESS";
}
catch(SQLException e)
{
e.printStackTrace();
}
return "Oops.. Something went wrong there..!"; // On failure, send a message from here.
}
}


RegisterBean.java
JavaBeans are classes that encapsulate many objects into a single object (the bean). A JavaBean property is a named feature that can be accessed by the user of the object. Here the RegisterBean encapsulates registration properties fullName, email, userName, password. To set or access individual properties, set and get functions have been implemented.
package com.mvc.bean;
public class RegisterBean {
private String fullName;
private String email;
private String userName;
private String password;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getFullName() {
return fullName;
}
public void setEmail(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
}
DBConnection.java We are making use of MySQL database server in this application. The URL format and driver name going to be different for different database servers.
package com.mvc.util;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConnection {
public static Connection createConnection()
{
Connection con = null;
String url = "jdbc:mysql://localhost:3306/customers"; //MySQL URL followed by the database name
String username = "root"; //MySQL username
String password = "root123"; //MySQL password
System.out.println("In DBConnection.java class ");
try
{
try
{
Class.forName("com.mysql.jdbc.Driver"); //loading MySQL drivers. This differs for database servers
}
catch (ClassNotFoundException e)
{
e.printStackTrace();
}
con = DriverManager.getConnection(url, username, password); //attempting to connect to MySQL database
System.out.println("Printing connection object "+con);
}
catch (Exception e)
{
e.printStackTrace();
}
return con;
}
}
web.xml
The web.xml is known as the deployment descriptor. It declares which Servlets exist and which URLs they handle. You need to mention the fully qualified path for Servlet here.
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>RegistrationMVC</display-name> <welcome-file-list> <welcome-file>Register.jsp</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>RegisterServlet</display-name> <servlet-name>RegisterServlet</servlet-name> <servlet-class>com.mvc.controller.RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/RegisterServlet</url-pattern> </servlet-mapping> </web-app>
Home.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> <title>Home Page</title> </head> <body> <center><h2>Home Page</h2></center> <b>User Registration Successful</b> <br></br> <b>Please <a href="https://krazytech.com/programs/a-login-application-in-java-using-model-view-controllermvc-design-pattern">log-in</a> to continue.</b> </body> </html>

The code base can be downloaded from here.
Good evening sir, I have one doubt sir, What will happen if we didn’t import the servlet.api.jar file otherwise we can work without importing it ?
Hi Siva,
Very Good evening.
The serlvet-api.jar contains necessary interfaces and classes that are used by the servlet. Few of them are ServletRequest, RequestDispatcher, ServletContext…
Your servlet code would throw errors and you cannot compile Servlet class without serlvet-api.jar.
thank you very much sir
thank you soo much sir… the vedio is very useful thank u once again sir…
You are welcome Siva.
It’s nice to hear that you are able to execute it.
https://youtu.be/dyme-pYvSio
sir i am copying and just paste but it is coming like this..
The comment section doesn’t support some tags. You need to put the code within
tags.404 server code is returned when the page you are trying to invoke is not present.
I suggest you that take all the code as it is and create database, table by following the scripts given. Place dependent jar files and run the application. You should be able to execute it without issues.
Please refer to the video – https://youtu.be/dyme-pYvSio
index.jsp
Insert title here
Enter the ID
Enter the NAME
Enter the USERNAME
Enter the PASSWORD
Enter the DESIGNATION
this only my program sir but it is showing 404 error please help me sir…….
though i changed the location in the server property and changed use tomcat installation it is showing 404 error please help me to overcome this problem sir…
Siva,
Could you please brief me a bit more about your error.
Where and at what step are you getting the error?
HTTP Status 404 – /tim
type Status report
message /tim
description The requested resource is not available.
Apache Tomcat/7.0.37
It is really helpful thank u sir stay uploading more and clear our doubts sir please……..
Thanks Siva.
I am glad it helped you.
You can always comment here with your doubts. It may help someone else too.
According to the 404 status, what was the solution? I’m having the same issue..
Bob,
404 error generally occurs when the servlet path specified in the action tag of the JSP is wrong or not matching with the name and path of the servlet where it resides.
Please cross check this.
Let me know if still not working.
Hi Ravi,
I have mailed you regarding one query.
Questions :
1. End User is entering the values for the fields in designed form. When click on review button. I need a table which shows the data entered by the end user. once they are sure. click on submit to store the data in db.
2. How to add a attachment field here in the registration form ?
3. How to store the data value in database ?
Please kindly help me on this questions. Thanks in advance !!!
Hi Sakthi,
1. Once the user submits his details, you can read all the data and display them in a tabular form on a JSP.
2. You can look for the code to provide a facility to attach files
3. storing data in DB is a simple task. Create tables and dump data into columns.
Refer to the code –
con = DBConnection.createConnection();
String query = “insert into users(SlNo,fullName,Email,userName,password) values (NULL,?,?,?,?)”; //Insert user details into the table ‘USERS’
preparedStatement = con.prepareStatement(query); //Making use of prepared statements here to insert bunch of data
preparedStatement.setString(1, fullName);
preparedStatement.setString(2, email);
preparedStatement.setString(3, userName);
preparedStatement.setString(4, password);
int i= preparedStatement.executeUpdate();
you can find this code in RegisterDao.java class.
wherw is home.jsp page..???
Sorry, Vishwa. It was missed.
Let me add it and notify you.
Meanwhile, as you are interested in Java, you may like to go through session based login application.
krazytech.com/programs/session-role-based-java-login-example
No the code is not working. I deleted the username from the DBconnection file and it gave me an error. I think connects to the database. I copied all the code from your website into its own project and no errors in netbeans. Its giving me the error
HTTP Status 500 –
type Exception report
message
description The server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
com.mvc.dao.RegisterDao.registerUser(RegisterDao.java:25)
com.mvc.controller.RegisterServlet.doPost(RegisterServlet.java:34)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.27 logs.
Apache Tomcat/8.0.27
I think whats wrong is in netbeans project it doesnt have JDBC Driver for MySQL. The DBconnection file has the jdbc. How do i add the mysql-connector-java.5.1.37.jar file in netbeans IDE 8.2
Try the following if available.
1. Go to project properties by right clicking on the project.
2. Then click on Libraries tab, You will see Compile, Run, Compile Tests, Run Tests tabs.
3. Click on Compile tab
4. Click on Add JAR/Folder button at right
5. Then browse and select the jar files or folder which you want to include. Included jar files or libraries will show on the following box of Compile tab.
6. Click on OK button.
7. Finished.
The code is running basically I added a dependency in Netbeans the mysql connector file
Great. Is it working fine now ?
In the RegisterDao.java, soon after the line
try
{
con = DBConnection.createConnection();
add the following line
System.out.println(“Connection – “+con);
Run your application from the beginning and let me know what you see in the console.
Comments are closed.