Display Header as per the user role into java web project

How to create admin and user login into java web application using JSP and servlet, In this example will create a simple java web protect to display header as per the user role.

Display Header as per the user role into java web project

  • Create a common login page to log in for all kinds of users.
  • Create a common User table for all the user roles.
  • Create a Header page.
  • Display header as per the user role.

“If Admin is login header will display as per the admin role and If the User is login then the header will display according to the user role”

Create a Java web project using Maven

Create a simple java maven project and set the JDK version as 1.8 or any above the JDK 8, Add the required maven dependencies. Check out the step-by-step guide to creating a java web maven project.

Add Maven Dependencies

Below are the required maven dependencies, that you need to add to pom.xml file.

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.15</version>
  </dependency>

  <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
  </dependency>

Create a User Table in the database

CREATE TABLE `tourandtravel`.`user` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `login` VARCHAR(45) NULL,
  `password` VARCHAR(45) NULL,
  PRIMARY KEY (`id`));

Create Java Database Connection and login method into Model

UserBean.java

package com.loginbymuluser.beans;

public class UserBean {
    
    private String login;
    private String password;
    private String roleName;
    
    
    
    public String getRoleName() {
        return roleName;
    }
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }
    public String getLogin() {
        return login;
    }
    public void setLogin(String login) {
        this.login = login;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    
    

}

Mydb.java

Mydb is a custom java class that contains the method “getCon()” that return the MySQL connection.

package com.loginbymuluser.model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class MyDb {

     
    public static Connection getCon() {
        Connection con = null;
        try {
              Class.forName("com.mysql.cj.jdbc.Driver");
               con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "root", "root");
              System.out.println("Con: "+con);
              
             } catch (ClassNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             } catch (SQLException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
             }
        return con;
    }
    
}

UserModel.java

package com.loginbymuluser.model;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.loginbymuluser.beans.UserBean;

public class UserModel {
    
    
    public static UserBean Login(String username, String Password) {
        
        Connection con = Mydb.getCon();
        UserBean bean = new UserBean();
        try {
            
            PreparedStatement stmt = con.prepareStatement("select * from user where login= '"+username+"'  and password = '"+Password+"'  ");
            ResultSet rs = stmt.executeQuery();
           while(rs.next()) {
               bean.setLogin(rs.getString("login"));
               bean.setPassword(rs.getString("password"));
               bean.setRoleName("rolename");
           }
           
        
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return bean;
    }

}

Create Session in Servlet (LoginCtl)

package com.loginbymuluser.controller;

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 javax.servlet.http.HttpSession;

import com.loginbymuluser.beans.UserBean;
import com.loginbymuluser.model.UserModel;
import com.loginbymuluser.utility.ServletUtility;

/**
 * Servlet implementation class LoginCtl
 */
@WebServlet("/LoginCtl")
public class LoginCtl extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public LoginCtl() {
        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 {
        // TODO Auto-generated method stub
        String uname = request.getParameter("uname");
        String password = request.getParameter("psw");
        
        UserBean bean = UserModel.Login(uname, password);
        System.out.println("bean.getRoleName(): "+bean.getRoleName());
        if(bean.getLogin() == null ) {
        	ServletUtility.forward("/jsp/login.jsp", request, response);
        }else {
            HttpSession session = request.getSession();
            
            session.setAttribute("user", bean.getRoleName());
        	
        	
        	ServletUtility.forward("/jsp/Welcome.jsp", request, response);
        }
        
        
    }

}

Get Session in JSP(Header.jsp)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {
  margin: 0;
  font-family: Arial, Helvetica, sans-serif;
}

.topnav {
  overflow: hidden;
  background-color: #333;
}

.topnav a {
  float: left;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
}

.topnav a:hover {
  background-color: #ddd;
  color: black;
}

.topnav a.active {
  background-color: #04AA6D;
  color: white;
}
</style>
</head>
<body>

<%

String roleName = (String)session.getAttribute("user");

%>


<div class="topnav">
<%if(roleName == null){ %>
<a class="active" href="/LoginByMulUser/jsp/login.jsp">Login</a>

<%}else if(roleName.equals("user")){ %>
  <a class="active" href="#">User</a>
  
  <%} else{%>
  <a href="#news">Admin</a>
<%} %>
</div>



</body>
</html>

Login.jsp

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {font-family: Arial, Helvetica, sans-serif;}
form {border: 3px solid #f1f1f1;}

input[type=text], input[type=password] {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

button {
  background-color: #04AA6D;
  color: white;
  padding: 14px 20px;
  margin: 8px 0;
  border: none;
  cursor: pointer;
  width: 100%;
}

button:hover {
  opacity: 0.8;
}

.cancelbtn {
  width: auto;
  padding: 10px 18px;
  background-color: #f44336;
}

.imgcontainer {
  text-align: center;
  margin: 24px 0 12px 0;
}

img.avatar {
  width: 40%;
  border-radius: 50%;
}

.container {
  padding: 16px;
}

span.psw {
  float: right;
  padding-top: 16px;
}

@media screen and (max-width: 300px) {
  span.psw {
     display: block;
     float: none;
  }
  .cancelbtn {
     width: 100%;
  }
}
</style>
<%@ include file="header.jsp"%>
</head>
<body>

<h2>Login Form</h2>

<form action="<%=request.getContextPath()%>/LoginCtl" method="post">


  <div class="container">
    <label for="uname"><b>Username</b></label>
    <input type="text" placeholder="Enter Username" name="uname" required>

    <label for="psw"><b>Password</b></label>
    <input type="password" placeholder="Enter Password" name="psw" required>
        
    <button type="submit">Login</button>
  
  </div>


</form>

</body>
</html>

Welcome.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<%@ include file="header.jsp"%>
<head>
<meta charset="ISO-8859-1">
<title>Welcome</title>

</head>
<body>

</body>
</html>