DEV Community

loading...
Cover image for LOGIN EN JSP Y MYSQL HACIENDO USO DE MVC CON TIPOS DE USUARIO

LOGIN EN JSP Y MYSQL HACIENDO USO DE MVC CON TIPOS DE USUARIO

victoralvarado profile image Victor Alvarado ・6 min read
Estructura del proyecto

edp

Base de Datos
create database login;
use login;

create table usuario(
idUsuario int primary key,
nombreUsuario varchar(50),
clave varchar(50),
tipoUsuario varchar(50)/* Administrador || Cliente*/
);

insert into usuario values(1,'admin','123','Administrador');
insert into usuario values(2,'cliente','321','Cliente');
Enter fullscreen mode Exit fullscreen mode
Clase Conexión
package com.conexion;
import java.sql.*;

/**
 * Nombre de Clase: Conexion.
 * Fecha: 29-09-2017.
 * Version: 1.0.
 * Copyright: ITCA-FEPADE.
 * @author Victor Alvarado
 */
public class Conexion {
    private Connection con;

    public Connection getCon() {
        return con;
    }

    public void setCon(Connection con) {
        this.con = con;
    }

    public void conectar() throws Exception
    {
        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection("jdbc:mysql://localhost:3306/login?user=root&password=");
        }
        catch (ClassNotFoundException | SQLException e)
        {
            throw e;
        }
    }

    public void desconectar() throws Exception
    {
        try
        {
            if(con!=null)
            {
                if(con.isClosed()==false)
                {
                    con.isClosed();
                }
            }
        }
        catch (SQLException e)
        {
            throw e;
        }
    }
}
Enter fullscreen mode Exit fullscreen mode
Clase Usuario
package com.modelo;

/**
 * Nombre de Clase: Usuario.
 * Fecha: 29-09-2017.
 * Version: 1.0.
 * Copyright: ITCA-FEPADE.
 * @author Victor Alvarado
 */
public class Usuario 
{
    private int idUsuario;
    private String nombreUsuario;
    private String clave;
    private String tipoUsuario;

    public Usuario() {
    }

    public Usuario(int idUsuario, String nombreUsuario, String clave, String tipoUsuario) {
        this.idUsuario = idUsuario;
        this.nombreUsuario = nombreUsuario;
        this.clave = clave;
        this.tipoUsuario = tipoUsuario;
    }

    public int getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(int idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getNombreUsuario() {
        return nombreUsuario;
    }

    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    public String getClave() {
        return clave;
    }

    public void setClave(String clave) {
        this.clave = clave;
    }

    public String getTipoUsuario() {
        return tipoUsuario;
    }

    public void setTipoUsuario(String tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }    
}
Enter fullscreen mode Exit fullscreen mode
Clase AccederUsuario
package com.modelo;

import com.conexion.Conexion;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 * Nombre de Clase: AccederUsuario.
 * Fecha: 29-09-2017.
 * Version: 1.0.
 * Copyright: ITCA-FEPADE.
 * @author Victor Alvarado
 */
public class AccederUsuario extends Conexion
{
    public String login(Usuario usu)throws Exception
    {
        String estado = "";
        ResultSet rs;
        try 
        {
            this.conectar();
            String sql = "select tipoUsuario from usuario where nombreUsuario=? and clave=?";
            PreparedStatement ps =this.getCon().prepareStatement(sql);
            ps.setString(1, usu.getNombreUsuario());
            ps.setString(2, usu.getClave());
            rs= ps.executeQuery();
            if (rs.next()) {

                estado = "true";

            }
            usu.setTipoUsuario(rs.getString("tipoUsuario"));
        } catch (Exception e) 
        {
            throw e;
        }
        return estado;
    }
}
Enter fullscreen mode Exit fullscreen mode
Pagina index
<%-- 
    Document   : index
    Created on : 09-29-2017, 04:49:38 PM
    Author     : VA
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="font/css/font-awesome.min.css">
        <link rel='stylesheet prefetch' href='bootstrap/css/bootstrap.min.css'>
        <link rel="stylesheet" href="css/style.css">
        <title>.::Login::.</title>
    </head>
    <body>
        <div class="wrapper">
            <form class="form-signin" action="accesoLogin" method="POST">
                <center><span class="fa fa-user fa-5x"></span></center>
                    <input type="text" class="form-control" name="nombreUsuario" placeholder="Nombre de Usuario" required="" autofocus="" />
                    <input type="password" class="form-control" name="clave" placeholder="Clave" required=""/>
                    <button class="btn btn-lg btn-primary btn-block" type="submit" name="btnAcceder">Acceder</button>   
            </form>
        </div>
    </body>
</html>
Enter fullscreen mode Exit fullscreen mode
Pagina vistaAdmin
<%-- 
    Document   : vistaAdmin
    Created on : 09-29-2017, 04:53:37 PM
    Author     : VA
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page session="true" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="../font/css/font-awesome.min.css">
        <link rel='stylesheet prefetch' href='../bootstrap/css/bootstrap.min.css'>
        <title>Admin</title>
    </head>
    <%
        String user = "";
        HttpSession objSesion = request.getSession();
        String usuario;
        if (objSesion.getAttribute("usuario") != null && objSesion.getAttribute("nivel") == "Administrador") {
            usuario = objSesion.getAttribute("usuario").toString();
            user = "<label>" + usuario + "</label>";
        } else if (objSesion.getAttribute("usuario") != null && objSesion.getAttribute("nivel") == "Cliente") {
            out.print("<script>location.replace('vistaCliente.jsp');</script>");
        } else {
            out.print("<script>location.replace('../index.jsp');</script>");
        }
    %>
    <body>
    <center>
        <h1>Vista Administrador</h1>
        <h1>Bienvenido <% out.print(user);%></h1>
        <h3>El administrador tiene acceso total a todo </h3>
        <a href="vistaCliente.jsp" class="btn btn-primary"><span class="fa fa-eye"></span> Vista Cliente</a>
        <a href="cerrarSesion.jsp" class="btn btn-danger"><span class="fa fa-sign-out"></span> Cerrar sesion</a>
    </center>
    </body>
</html>
Enter fullscreen mode Exit fullscreen mode
Pagina vistaCiente
<%-- 
    Document   : vistaCliente
    Created on : 09-29-2017, 04:53:50 PM
    Author     : VA
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page session="true" %>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="../font/css/font-awesome.min.css">
        <link rel='stylesheet prefetch' href='../bootstrap/css/bootstrap.min.css'>
        <title>Cliente</title>
    </head>
        <%
            String user = "";
            String admin = "";
            HttpSession objSesion = request.getSession();
            String usuario;
            if (objSesion.getAttribute("usuario") != null && objSesion.getAttribute("nivel") == "Cliente") {
                usuario = objSesion.getAttribute("usuario").toString();
                user = "<label>" + usuario + "</label>";
            } else if (objSesion.getAttribute("usuario") != null && objSesion.getAttribute("nivel") == "Administrador") {
                usuario = objSesion.getAttribute("usuario").toString();
                user = "<label>" + usuario + "</label>";
                admin = "<label>El administrador tiene acceso total a todo <br><a href='vistaAdmin.jsp' class='btn btn-primary'><span class='fa fa-eye'></span> Vista administrador</a></label>";
            } else {
                out.print("<script>location.replace('../index.jsp');</script>");
            }
        %>
    <body>
    <center><h1>Vista Cliente</h1>
        <% out.print(admin); %>
        <h1>Bienvenido <% out.print(user);%></h1>
        <a href="cerrarSesion.jsp" class="btn btn-danger"><span class="fa fa-sign-out"></span> Cerrar sesion</a>
    </center>    
    </body>
</html>
Enter fullscreen mode Exit fullscreen mode
Pagina error
<%-- 
    Document   : error
    Created on : 09-29-2017, 05:34:57 PM
    Author     : VA
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="../font/css/font-awesome.min.css">
        <link rel='stylesheet prefetch' href='../bootstrap/css/bootstrap.min.css'>
        <title>Error</title>
    </head>
    <body>
        <br>
        <br>
    <center>
        <h1 style="color: #0275d8;"><span style="color: red" class="fa fa-user-times"></span><br> Su usuario o clave son incorrectos</h1>
        <a href="../index.jsp" class="btn btn-primary"><span class="fa fa-user-circle"></span> Login</a>
    </center>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode
Pagina cerrarSesion
<%-- 
    Document   : cerrarSesion
    Created on : 09-29-2017, 04:53:15 PM
    Author     : VA
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page session="true" %>
<%  
    HttpSession objSesion = request.getSession();  
    objSesion.invalidate();
    out.print("<script>location.replace('../index.jsp');</script>");
%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>

    </body>
</html>
Enter fullscreen mode Exit fullscreen mode
Clase Servlet AccesoLogin
package com.controlador;

import com.modelo.AccederUsuario;
import com.modelo.Usuario;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * Nombre de Clase: AccesoLogin. Fecha: 29-09-2017. Version: 1.0. Copyright:
 * ITCA-FEPADE.
 *
 * @author Victor Alvarado
 */
public class AccesoLogin extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        if (request.getParameter("btnAcceder") != null) {
            Usuario usu = new Usuario();
            String user = request.getParameter("nombreUsuario");
            String clave = request.getParameter("clave");

            usu.setNombreUsuario(user);
            usu.setClave(clave);
            AccederUsuario login = new AccederUsuario();
            String estado;

            try {
                estado = login.login(usu);

                if ("true".equals(estado)) {

                    HttpSession objSesion = request.getSession();

                    if (usu.getTipoUsuario().equals("Administrador")) {
                        objSesion.setAttribute("usuario", user);
                        objSesion.setAttribute("nivel", "Administrador");
                        response.sendRedirect("jsp/vistaAdmin.jsp");
                    } else if (usu.getTipoUsuario().equals("Cliente")) {
                        objSesion.setAttribute("usuario", user);
                        objSesion.setAttribute("nivel", "Cliente");
                        response.sendRedirect("jsp/vistaCliente.jsp");
                    }
                }
            } catch (Exception ex) {
                response.sendRedirect("./jsp/error.jsp");
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
Enter fullscreen mode Exit fullscreen mode
Vista Login

login

Vista Error

error

Vista Administrador

admin

El administrador tiene acceso total

admincliente

Vista Cliente

Alt Text

Descargar Archivos

Descargar

Discussion (0)

pic
Editor guide