package com.schoolregistration.serviceimpl; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; 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; import com.schoolregistration.dao.DataAccessException; import com.schoolregistration.dao.impl.JDBCUserTypeImpl; public class Authentication extends HttpServlet { private static final long serialVersionUID = 1L; private PreparedStatement ptmt = null; private ResultSet resultSet = null; public final static String SELECTSQL = "SELECT * from useraccount where username= ? AND usertypeid= ?"; public Authentication() { super(); // TODO Auto-generated constructor stub } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher view = request.getRequestDispatcher("login.jsp"); view.forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ConnectionFactory cm = com.schoolregistration.serviceimpl.ConnectionFactory.getInstance(); Connection conn = cm.getConnection(); //Successful Connection if(conn!=null) { String usernameInput = request.getParameter("username"); String passwordInput = request.getParameter("password"); String userTypeInput = request.getParameter("usertype"); JDBCUserTypeImpl userTypeDAO = new JDBCUserTypeImpl(); int userTypeID = 1; try { userTypeID = userTypeDAO.getUserTypeIdByName(userTypeInput); } catch (DataAccessException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { ptmt = conn.prepareStatement(SELECTSQL); ptmt.setString(1, usernameInput.toString()); ptmt.setInt(2, userTypeID); resultSet = ptmt.executeQuery(); boolean resultSetHasNoResults = true; while(resultSet.next()) { resultSetHasNoResults = false; String dataUsername = resultSet.getString("username"); String dataPassword = resultSet.getString("password"); int dataUsertype = resultSet.getInt("usertypeid"); int userId = resultSet.getInt("userid"); if(usernameInput.equals(dataUsername)) { if(passwordInput.equals(dataPassword)) { switch(dataUsertype) { case 1: { validStudentRedirection(request,response, usernameInput, userId); } case 2: { } default: } } else { invalidPasswordRedirection(request, response); } } else { invalidUsernameAndPasswordRedirection(request, response); } } if(resultSetHasNoResults) { invalidUsernameAndPasswordRedirection(request, response); } } catch (SQLException e) { e.printStackTrace(); } finally { closeResources(conn, ptmt, resultSet); } } else { try { throw new SQLException(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private void invalidPasswordRedirection(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("Status","Wrong password!!!"); RequestDispatcher view = request.getRequestDispatcher("login.jsp"); view.forward(request, response); } private void validStudentRedirection(HttpServletRequest request, HttpServletResponse response, String usernameInput, int userid) throws ServletException, IOException { HttpSession session = request.getSession(); session.setAttribute("Username",usernameInput); session.setAttribute("userid",userid); RequestDispatcher view = request.getRequestDispatcher("welcomeuser.jsp"); view.forward(request, response); } private void invalidUsernameAndPasswordRedirection( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("Status","Invalid username or password!!!"); RequestDispatcher view = request.getRequestDispatcher("login.jsp"); view.forward(request, response); } private void closeResources(Connection conn, PreparedStatement ptmt, ResultSet resultSet) { try { if (resultSet != null) resultSet.close(); if (ptmt != null) ptmt.close(); if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }