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.
i m using microsoft sql server2012 ..pls tell me how to connect to ms sql server 2012 with netbeans 8.0.2
can you please tell me how to connect Databases with netbeans8.0.2
Hi,
Update following two lines in the DBConnection.java class. Also, you need to add SQL driver classes to the classpath.
String url = "jdbc:sqlserver://localhost:1433//SQLEXPRESS;databaseName=DBName";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Try the following to add dependent jar files in NetBeans.
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.
that’s it for connection? anything i need to put connection through ms sql server 2012 to netbeans 8.0.2
You would also need to add driver (Jar).
Refer to https://docs.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server
i m getting error like this..pls help..
check below;;
type Exception report
message Internal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1 logs.
We will address your latest issue regarding connecting to microsoft sql server.
thank yu sir!!
sir,The coding is very helpful..
if i execute register.jsp i m getting errror like this..check below..pls tell me how to solve that error..
i m getting error like this..pls help..
check below;;
type Exception report
message Internal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1 logs.
Thank you.!
I see that you are using NetBeans IDE and GlassFish server, this seems to be an issue with your GlassFish server.
I believe you are getting this error when you are trying to run your application.
Can you work on how to integrate Glassfish server in NetBeans? Sorry. I am not quite familiar with this.
In case if you want to try running your application in Eclipse, you can go through the following video for better understanding https://youtu.be/dyme-pYvSio.
i executed register.jsp page after executing that page..i m getting eror like this..pls tell me how to solve that issue …
i m getting error like this..pls help..
check below;;
type Exception report
message Internal Server Error
descriptionThe server encountered an internal error that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.1 logs.
Answered already.
Hey!!
Goood to see that you are replying every post.
can you please tell me how to connect Databases with eclipse.
which softwares do i need?
Hi Zain
Thank you for the comment.
You can go through the following post to know how to connect to the DB server through Eclipse
https://docs.oracle.com/cd/E14545_01/help/oracle.eclipse.tools.database.doc/html/gettingStarted/files/gettingStarted.html
If you want to connect to any other database server simply use DBConnection.java class and provide the host, user details to connect to the database. You would need to change the driver details according to the database server and you would need JAR file as well.