Create database masterjee using mysql
create database masterjee;Create table user
create table user(id INT NOT NULL AUTO_INCREMENT, name varchar(255) not null,email varchar(255) NOT NULL, password varchar(255) not null, contact VARCHAR(20) NOT NULL, primary key(id));Create Dynamic web project "LoginApplicationUsingSession"
Add jars inside WebContent/WEB-INF/lib
- javax.servlet-api-3.1.0.jar
- mysql-connector-java-5.1.42-bin.jar
Add bootstrap.min.css file to WebContent for UI
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>LoginApplicationUsingSession</display-name>
<welcome-file-list>
<welcome-file>home.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>profile</servlet-name>
<servlet-class>com.masterjee.servlet.ProfileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>profile</servlet-name>
<url-pattern>/profile</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>register</servlet-name>
<servlet-class>com.masterjee.servlet.RegisterServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>register</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>logout</servlet-name>
<servlet-class>com.masterjee.servlet.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>logout</servlet-name>
<url-pattern>/logout</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>login</servlet-name>
<servlet-class>com.masterjee.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
Put all jsp/css files inside WebContent
header.jsp
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Login Application</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="home.jsp">Home</a></li>
<li><a href="profile">Profile</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li role="presentation"><a href="login.jsp">Login</a></li>
<li><a href="register.jsp">Register</a></li>
<li><a href="logout">Logout</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
header2.jsp
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">Login Application</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active" ><a href="profile">Profile</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="logout">Logout</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
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>
<link href="bootstrap.min.css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home</title>
</head>
<body>
<jsp:include page="header.jsp" />
<div class="container">
<div class="jumbotron">
<jsp:include page="error.jsp" />
<h1>This is a Home Page</h1>
</div>
</div>
</body>
</html>
login.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>Login</title>
<link href="bootstrap.min.css" rel="stylesheet">
<link href="signin.css" rel="stylesheet">
</head>
<body>
<jsp:include page="header.jsp" />
<div class="container">
<div class="jumbotron">
<jsp:include page="error.jsp" />
<form class="form-signin" action="login" method="post">
<h2 class="form-signin-heading">Please sign in</h2>
<label for="inputEmail" class="sr-only">Email</label> <input
type="email" name="email" id="inputEmail" class="form-control"
placeholder="Email address" required autofocus /> <label
for="inputPassword" class="sr-only">Password</label> <input
type="password" name="password" id="inputPassword"
class="form-control" placeholder="Password" required />
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign
in</button>
</form>
</div>
</div>
</body>
</html>
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>
<link href="bootstrap.min.css" rel="stylesheet">
<link href="signin.css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Home</title>
</head>
<body>
<jsp:include page="header.jsp" />
<div class="container">
<div class="jumbotron">
<jsp:include page="error.jsp" />
<form class="form-signin" action="register" method="post">
<h2 class="form-signin-heading">Please Register</h2>
<label for="name" class="sr-only">Name</label>
<input type="text" name="name" id="name" class="form-control" placeholder="Name" required autofocus />
<label for="inputEmail" class="sr-only">Email</label>
<input type="email" name="email" id="inputEmail" class="form-control" placeholder="Email address" required />
<label for="contact" class="sr-only">Contact no</label>
<input type="text" name="contact" id="contact" class="form-control" placeholder="Contact no" required />
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" name="password" id="password" class="form-control" placeholder="Password" required/>
<label for="inputPassword" class="sr-only">Confirm Password</label>
<input type="password" name="confirmpassword" id="confirmpassword" class="form-control" placeholder="Confirm Password"required/>
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign up</button>
</form>
</div>
</div>
</body>
</html>
welcome.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>
<link href="bootstrap.min.css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome</title>
</head>
<body>
<jsp:include page="header2.jsp" />
<div class="container">
<div class="jumbotron">
<h1 Style="color:Green"> This is a Profile Page: </h1>
<jsp:include page="error.jsp" />
</div>
</div>
</body>
</html>
error.jsp
<h3 Style="color: RED">
<%
if (null != request.getAttribute("message")) {
out.println(request.getAttribute("message"));
}
%>
</h3>
Create all Servlets/ Java files
User.java
package com.masterjee.model;
public class User {
private int id;
private String name;
private String email;
private String contact;
private String password;
private String passwordConfirm;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getContact() {
return contact;
}
public void setContact(String contact) {
this.contact = contact;
}
public String getPasswordConfirm() {
return passwordConfirm;
}
public void setPasswordConfirm(String passwordConfirm) {
this.passwordConfirm = passwordConfirm;
}
}
LoginServlet.java
package com.masterjee.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.masterjee.dao.LoginDao;
import com.masterjee.model.User;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 4752123867015170472L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=UTF-8");
String email = request.getParameter("email");
String password = request.getParameter("password");
User user = LoginDao.userLogin(email, password);
if (user!=null &&user.getName() !=null) {
HttpSession session = request.getSession();
session.setAttribute("user", user.getName());
request.setAttribute("message", "Welcome: "+user.getName());
request.getRequestDispatcher("/welcome.jsp").include(request, response);
} else {
request.setAttribute("message", "Invalid username/password");
request.getRequestDispatcher("login.jsp").include(request, response);
}
}
}
LogoutServlet.java
package com.masterjee.servlet;
import java.io.IOException;
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 LogoutServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType("text/html");
HttpSession session =request.getSession();
session.invalidate();
request.getRequestDispatcher("/home.jsp").forward(request, response);
}
}
ProfileServlet.java
package com.masterjee.servlet;
import java.io.IOException;
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 ProfileServlet extends HttpServlet {
private static final long serialVersionUID = -8668025769937825140L;
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
HttpSession session = request.getSession(false);
if (session != null && session.getAttribute("user") != null) {
request.setAttribute("message", "Welcome "+session.getAttribute("user"));
request.getRequestDispatcher("/welcome.jsp").include(request, response);
} else {
request.setAttribute("message", "Please login first.....");
request.getRequestDispatcher("/login.jsp").include(request, response);
}
}
}
RegisterServlet.java
package com.masterjee.servlet;
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.masterjee.dao.RegisterDao;
import com.masterjee.model.User;
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 3597895668111903509L;
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
User user = new User();
user.setName(request.getParameter("name"));
user.setEmail(request.getParameter("email"));
user.setContact(request.getParameter("contact"));
user.setPassword(request.getParameter("password"));
user.setPasswordConfirm(request.getParameter("confirmpassword"));
if (!user.getPassword().equals(user.getPasswordConfirm())) {
request.setAttribute("message", "Password and confirm password should be same..");
request.getRequestDispatcher("register.jsp").include(request, response);
} else {
if (RegisterDao.register(user)) {
request.setAttribute("message", "Records created successfully");
request.getRequestDispatcher("login.jsp").include(request, response);
} else {
request.setAttribute("message", "error from database while inserting records....");
request.getRequestDispatcher("register.jsp").include(request, response);
}
}
}
}
ConnectionProvider.java
package com.masterjee.dao;
import java.sql.Connection;
import java.sql.DriverManager;
public class ConnectionProvider {
private static ConnectionProvider connectionProvider = null;
private static String DRIVER_NAME = "com.mysql.jdbc.Driver";
private static String URL = "jdbc:mysql://localhost:3306/masterjee";
private static String USER_NAME = "root";
private static String PASSWORD = "root";
private ConnectionProvider() {
}
public Connection getConnection() throws Exception {
Class.forName(DRIVER_NAME);
return DriverManager.getConnection(URL, USER_NAME, PASSWORD);
}
public static ConnectionProvider getInstance() {
if (connectionProvider == null) {
connectionProvider = new ConnectionProvider();
return connectionProvider;
}
return connectionProvider;
}
}
LoginDao.java
package com.masterjee.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.masterjee.model.User;
public class LoginDao {
public static User userLogin(String email, String password) {
Connection connection = null;
PreparedStatement preparedStatement = null;
User user =null;
try {
connection = ConnectionProvider.getInstance().getConnection();
preparedStatement = connection.prepareStatement("select * from user where email=? and password=?");
preparedStatement.setString(1, email);
preparedStatement.setString(2, password);
ResultSet resultSet = preparedStatement.executeQuery();
if (resultSet != null) {
while(resultSet.next()){
user =new User();
user.setName(resultSet.getString(2));
}
}
} catch (Exception e) {
System.out.println(e);
} finally {
try {
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
}
RegisterDao.java
package com.masterjee.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.masterjee.model.User;
public class RegisterDao {
public static boolean register(User user) {
Connection connection = null;
PreparedStatement preparedStatement = null;
try {
connection = ConnectionProvider.getInstance().getConnection();
preparedStatement = connection.prepareStatement("insert into user(name, email, password, contact) values(?,?,?,?)");
preparedStatement.setString(1, user.getName());
preparedStatement.setString(2, user.getEmail());
preparedStatement.setString(3, user.getPassword());
preparedStatement.setString(4, user.getContact());
preparedStatement.executeUpdate();
return true;
} catch (Exception e) {
System.out.println(e);
} finally {
try {
if (preparedStatement != null) {
preparedStatement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return false;
}
}