Hi, This article will show you how to use JSP, Servlet, and MySQL to create a Java MVC login and registration script. I designed a 3-tier pattern approach in Java once I finish learning JSP and Servlet. The 3-Tier architecture is a software design paradigm in which business processes are represented by logic (Model), presentation layers (View) represent user interface, and the center (Controller) receives requests and responds to them.
The MVC architecture splits and encapsulates the sections of your applications for simpler maintenance. This tutorial follows the 3-tier pattern and will show you how to construct a better application by using JSP, Servlet, and Java classes.

What is MVC Architecture in Java?
- Model – It will be some layer of DAO that gives user request information. Or Model can be a POJO that encapsulates controller-specified application data.
- View – It is responsible for rendering model data, generating new output based on model changes, which can be interpreted by the client's browser.
- Controllers – Interacting between Model and View components to process all business logic and incoming requests, manipulating data using the Model component, and interacting with Views to render the final result.
Project Directory :-

Database / Table
-- Database: `db_mvclogin`
--
-- --------------------------------------------------------
--
-- Table structure for table `user`
--
CREATE TABLE `user` (
`id` int(11) NOT NULL,
`firstname` varchar(12) NOT NULL,
`lastname` varchar(12) NOT NULL,
`username` varchar(20) NOT NULL,
`password` varchar(30) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
index.jsp [ login page ]
<h2>Login</h2>
<form method="post" action="LoginController" name="LoginForm" onsubmit="return validate();">
Username :<input type="text" name="txt_username">
Password :<input type="password" name="txt_password">
<input type="submit" name="btn_login" value="Login">
<h3>Your don't have a account? <a href="register.jsp">Register</a></h3>
</form>

LoginController.java
package com.mvc.controller;
import com.mvc.bean.LoginBean;
import com.mvc.dao.LoginDao;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginController extends HttpServlet
{
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
if(request.getParameter("btn_login")!=null) //check button click event not null from login.jsp page button
{
String username=request.getParameter("txt_username"); //get textbox name "txt_username"
String password=request.getParameter("txt_password"); //get textbox name "txt_password"
LoginBean loginBean=new LoginBean(); //this class contain seeting up all received values from index.jsp page to setter and getter method for application require effectively
loginBean.setUsername(username); //set username through loginBean object
loginBean.setPassword(password); //set password through loginBean object
LoginDao loginDao=new LoginDao(); //this class contain main logic to perform function calling and database operation
String authorize=loginDao.authorizeLogin(loginBean); //send loginBean object values into authorizeLogin() function in LoginDao class
if(authorize.equals("SUCCESS LOGIN")) //check calling authorizeLogin() function receive string "SUCCESS LOGIN" message after continue process
{
HttpSession session=request.getSession(); //session is created
session.setAttribute("login",loginBean.getUsername()); //session name is "login" and store username in "getUsername()" get through loginBean object
RequestDispatcher rd=request.getRequestDispatcher("welcome.jsp"); //redirect to welcome.jsp page
rd.forward(request, response);
}
else
{
request.setAttribute("WrongLoginMsg",authorize); //wrong login error message is "WrongLoginMsg"
RequestDispatcher rd=request.getRequestDispatcher("index.jsp"); //show error same index.jsp page
rd.include(request, response);
}
}
}
}
LoginBean.java
package com.mvc.bean;
public class LoginBean
{
private String username,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;
}
}
LoginDao.java
package com.mvc.dao;
import com.mvc.bean.LoginBean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class LoginDao
{
public String authorizeLogin(LoginBean loginBean) //create authorizeLogin()function
{
String username=loginBean.getUsername(); //get username value through loginBean object and store in temporary variable "username"
String password=loginBean.getPassword(); //get password value through loginBean object and store in temporary variable "password"
String dbusername=""; //create two variable for use next process
String dbpassword="";
String url="jdbc:mysql://localhost:3306/db_mvclogin"; //database connection url string
String uname="root"; //database username
String pass=""; //database password
try
{
Class.forName("com.mysql.jdbc.Driver"); //load driver
Connection con=DriverManager.getConnection(url,uname,pass); //create connection
PreparedStatement pstmt=null; //create statement
pstmt=con.prepareStatement("select * from user where username=? and password=?"); //sql select query
pstmt.setString(1,username);
pstmt.setString(2,password);
ResultSet rs=pstmt.executeQuery(); //execute query and set in Resultset object rs.
while(rs.next())
{
dbusername=rs.getString("username"); //fetchable database record username and password store in this two variable dbusername,dbpassword above created
dbpassword=rs.getString("password");
if(username.equals(dbusername) && password.equals(dbpassword)) //apply if condition check for fetchable database username and password are match for user input side type in textbox
{
return "SUCCESS LOGIN"; //if valid condition return string "SUCCESS LOGIN"
}
}
pstmt.close(); //close statement
con.close(); //close connection
}
catch(Exception e)
{
e.printStackTrace();
}
return "WRONG USERNAME AND PASSWORD"; //if invalid condition return string "WRONG USERNAME AND PASSWORD"
}
}
register.jsp
<h2>Register</h2>
<form method="post" action="RegisterController" onsubmit="return validate();">
Firstname <input type="text" name="txt_firstname" id="fname"></br></br>
Lastname <input type="text" name="txt_lastname" id="lname"></br></br>
Username <input type="text" name="txt_username" id="uname"></br></br>
Password <input type="password" name="txt_password" id="password"></br></br>
<input type="submit" name="btn_register" value="Register">
<h3>You have a account? <a href="index.jsp">Login</a></h3>
</form>

RegisterController.java
package com.mvc.controller;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
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 RegisterController extends HttpServlet
{
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
if(request.getParameter("btn_register")!=null) //check button click event not null from register.jsp page button
{
String firstname=request.getParameter("txt_firstname");
String lastname=request.getParameter("txt_lastname");
String username=request.getParameter("txt_username"); //get all textbox name from register.jsp page
String password=request.getParameter("txt_password");
RegisterBean registerBean=new RegisterBean(); //this class contain seeting up all received values from register.jsp page to setter and getter method for application require effectively
registerBean.setFirstname(firstname);
registerBean.setLastname(lastname);
registerBean.setUsername(username); //set the all value through registerBean object
registerBean.setPassword(password);
RegisterDao registerdao=new RegisterDao(); //this class contain main logic to perform function calling and database operation
String registerValidate=registerdao.authorizeRegister(registerBean); //send registerBean object values into authorizeRegister() function in RegisterDao class
if(registerValidate.equals("SUCCESS REGISTER")) //check calling authorizeRegister() function receive "SUCCESS REGISTER" string message after redirect to index.jsp page
{
request.setAttribute("RegiseterSuccessMsg",registerValidate); //apply register successfully message "RegiseterSuccessMsg"
RequestDispatcher rd=request.getRequestDispatcher("index.jsp"); //redirect to index.jsp page
rd.forward(request, response);
}
else
{
request.setAttribute("RegisterErrorMsg",registerValidate); // apply register error message "RegiseterErrorMsg"
RequestDispatcher rd=request.getRequestDispatcher("register.jsp"); //show error same page register.jsp page
rd.include(request, response);
}
}
}
}
RegisterBean.java
package com.mvc.bean;
public class RegisterBean
{
private String firstname,lastname,username,password;
public String getFirstname(){
return firstname;
}
public void setFirstname(String firstname){
this.firstname=firstname;
}
public String getLastname(){
return lastname;
}
public void setLastname(String lastname){
this.lastname=lastname;
}
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;
}
}
RegisterDao.java
package com.mvc.dao;
import com.mvc.bean.RegisterBean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class RegisterDao
{
public String authorizeRegister(RegisterBean registerBean) //create authorizeRegister()function
{
String firstname=registerBean.getFirstname();
String lastname=registerBean.getLastname();
String username=registerBean.getUsername(); //get all value through registerBean object and store in temporary variable
String password=registerBean.getPassword();
String url="jdbc:mysql://localhost:3306/db_mvclogin"; //database connection url string
String uname="root"; //database username
String pass=""; //database password
try
{
Class.forName("com.mysql.jdbc.Driver"); //load driver
Connection con=DriverManager.getConnection(url,uname,pass); //create connection
PreparedStatement pstmt=null; //create statement
pstmt=con.prepareStatement("insert into user(firstname,lastname,username,password) values(?,?,?,?)"); //sql insert query
pstmt.setString(1,firstname);
pstmt.setString(2,lastname);
pstmt.setString(3,username);
pstmt.setString(4,password);
pstmt.executeUpdate(); //execute query
pstmt.close(); //close statement
con.close(); //close connection
return "SUCCESS REGISTER"; //if valid return string "SUCCESS REGISTER"
}
catch(Exception e)
{
e.printStackTrace();
}
return "FAIL REGISTER"; //if invalid return string "FAIL REGISTER"
}
}
Learn More – How to Send Email After Registration with Activation Link in Java
welcome.java
<center>
<h2>
<%
if(session.getAttribute("login")==null || session.getAttribute("login")=="") //check if condition for unauthorize user not direct access welcome.jsp page
{
response.sendRedirect("index.jsp");
}
%>
Welcome, <%=session.getAttribute("login")%>
</h2>
<h3>
<a href="logout.jsp">Logout</a>
</h3>
</center>

logout.jsp
<%
session.invalidate(); //session destroy
response.sendRedirect("index.jsp"); //after destroy redirect to index.jsp page
%>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>RegisterController</servlet-name>
<servlet-class>com.mvc.controller.RegisterController</servlet-class>
</servlet>
<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.mvc.controller.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RegisterController</servlet-name>
<url-pattern>/RegisterController</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/LoginController</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
Download Codes
can i delete folder lib if i use netbeans??? and what is the lib folder function?
ReplyDeletePut .jar files in lib folder mysql-connect.jar, jsp-api.jar that is use for lib folder
Delete