miércoles, 28 de agosto de 2019

Fondo


CSS

* {
    margin: 0px;
    padding: 0px;
}

body {
    background: url(../imagen/fondo-header.jpg);
}

#cuadro {
    width: 330px;
    background: #090909;
    color: #ffffff;
    margin: auto;
    margin-top: 120px;
    padding: 5px 5px 30px 5px;
    border-top: 35px solid #141414;
    border-right: 35px solid #141414;
    border-left: 35px solid #141414;
    border-radius: 6px;
    opacity: 0.7;
}

.entrada {
    width: 320px;
    height: 35px;
    border-radius: 6px;
    font-family: Verdana;
    font-weight: 900;
}

#boton {
    width: 324px;
    height: 45px;
    border-radius: 6px;
    background: blue;
    color: #ffffff;
    font-size: 15px;
}

#titulo {
    font-size: 30px;
    font-family: fantasy;
}

#subtitulo1 {
    padding-left: 80px;
}

#subtitulo2 {
    padding-left: 115px;
}

#marca {
    font-size: 30px;
    padding-left: 190px;
    font-weight: 900;
}

JSP Page 2

<%@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">
        <title>Bienvenido</title>
    </head>
    <body>
        
        <%
            HttpSession sesion = request.getSession();
            String usuario;
            String nivel;
            if (session.getAttribute("user") != null && session.getAttribute("nivel") != null) {
                usuario = session.getAttribute("user").toString();
                nivel = session.getAttribute("nivel").toString();
                out.print("<a href='login.jsp?cerrar=true'><h5>Cerrar Sesion " + usuario + "</h5></a>");
            } else {
                out.print("<script>location.replace('login.jsp');</script>");
            }
            %>
            
        <h1>Bienvenido!!!</h1>
    </body>
</html>

Login JSP

<%@page import="pqSecurity.SecurityInterface"%>
<%@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">
        <title>Login</title>
        <link href="css/estilo.css" rel="stylesheet" type="text/css"/>
    </head>
    <body>
        <div id="cuadro">
            <form action="index.jsp" method="POST">
                <p id="titulo">INICIAR SESIÓN</p>
                <hr>
                <br/><br/>
                
                <label id="subtitulo1" for="user">NOMBRE DE USUARIO</label>
                <br/><br/>
                <input type="text" class="entrada" id="user" name="txtUsuario"/>
                <br/><br/>
                
                <label id="subtitulo2" for="pass">PASSWORD</label>
                <br/><br/>
                <input type="password" class="entrada" id="pass" name="txtPassword"/>
                <br/><br/>
                
                <input type="submit" name = "btnIngresar" value="Ingresar" id="boton"/>
            </form>
            
            <%
                SecurityInterface op = new SecurityInterface();
                
                HttpSession sesion = request.getSession();
                
                if (request.getParameter("btnIngresar") != null) {
                    String usuario = request.getParameter("txtUsuario");
                    String password = request.getParameter("txtPassword");
                    
                    boolean acceso = op.logear(usuario, password);
                    
                    if (acceso) {
                        sesion.setAttribute("user", usuario);
                        session.setAttribute("nivel", "1");
                        response.sendRedirect("indexMain.jsp");
                    } else {
                        out.write("El usuario o la contraseña es incorrecta.");
                    }
                }
                if (request.getParameter("cerrar") != null) {
                    sesion.invalidate();
                }
                %>
            
            <br/><br/>
            <p id="marca">Jorge Pérez</p>
        </div>
    </body>
</html>

XML Java

package Main;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import pqConexion.*;

public class MainXMLdb {
    
    public static void main(String args[]) {
        
        String tabla = "USUARIOS";
        
        String id="", nombre="", apellido="", login="", password="", sessionid="";
        System.out.println("EJECUCION SQL");
        Transactions jlpc = new Transactions();
        
        
        System.out.println("\nCONSULTAR TODOS LOS DATOS");
        jlpc.buscar(tabla);
            
            
        System.out.println("Realizar una conexion a la base de datos");
        jlpc.conectar();
        
        System.out.println(System.getProperty("user.dir"));
        try {
            File archivo = new File(System.getProperty("user.dir") + "\\src\\java\\Main\\datos.xml");
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder = dbf.newDocumentBuilder();
            Document document = documentBuilder.parse(archivo);

            document.getDocumentElement().normalize();
            System.out.println("Elemento raiz:" + document.getDocumentElement().getNodeName());
            NodeList listaEmpleados = document.getElementsByTagName("usuario");

            for (int temp = 0; temp < listaEmpleados.getLength(); temp++) {
                Node nodo = listaEmpleados.item(temp);
                System.out.println("\nElemento:" + nodo.getNodeName());
                if (nodo.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) nodo;
                    id = element.getElementsByTagName("id").item(0).getTextContent();
                    nombre = element.getElementsByTagName("nombre").item(0).getTextContent();
                    apellido = element.getElementsByTagName("apellido").item(0).getTextContent();
                    login = element.getElementsByTagName("login").item(0).getTextContent();
                    password = element.getElementsByTagName("password").item(0).getTextContent();
                    sessionid = element.getElementsByTagName("sessionid").item(0).getTextContent();
                    
                    System.out.println("id: " + id);
                    System.out.println("Nombre: " + nombre);
                    System.out.println("Apellido: " + apellido);
                    System.out.println("Login: " + login);
                    System.out.println("Password: " + password);
                    System.out.println("SessionId: " + sessionid);
                    
                    System.out.println("\nINSERCION DE DATOS");
                    jlpc.insertarUsuario(tabla, id, nombre, apellido, login, password, sessionid);
                }
            }

            System.out.println("\nCONSULTAR DE DATOS");
            jlpc.buscar(tabla, "1");

            System.out.println("\nACTUALIZACION DE DATOS");
            jlpc.modificarUsuario(tabla, "1", "Juana", "de Perez", "juan", "x765", "CT3435DGVFN");

            System.out.println("\nELIMINACION DE DATOS");
            jlpc.eliminarUsuario(tabla, "1");
   
            
            
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

XML

<?xml version="1.0" encoding="UTF-8"?>
<usuarios>
    <usuario>
        <id>1</id>
        <nombre>Juan</nombre>
        <apellido>Perez</apellido>
        <login>juan</login>
        <password>p1234</password>
        <sessionid>HT3435DGVFG</sessionid>
    </usuario>
    <usuario>
        <id>2</id>
        <nombre>Ernesto</nombre>
        <apellido>Lopez</apellido>
        <login>lopez</login>
        <password>edfvd</password>
        <sessionid>ML3895DGVTY</sessionid>
    </usuario>
    <usuario>
        <id>3</id>
        <nombre>Jilio</nombre>
        <apellido>Sorto</apellido>
        <login>Sorto</login>
        <password>edfvd</password>
        <sessionid>ML5825DGPQY</sessionid>
    </usuario>
</usuarios>

Login BD Java

package pqSecurity;

import java.util.List;
import java.util.Map;

import pqConexion.Transactions;

public class SecurityInterface {

    private String user;
    private String pass;
    private String id;
    private boolean acceso;

    public SecurityInterface() {
        this.acceso = false;
    }

    public boolean logear(String user, String pass) {
        this.acceso = false;
        this.user = user;
        this.pass = pass;

        Transactions tr = new Transactions();
        try {
            List<Map<String, Object>> registro = null;
            registro = tr.sesion("USUARIOS", this.user, this.pass);

            if ((registro != null) && (registro.size() > 0)) {
                this.acceso = true;
            } else {
                this.acceso = false;
            }
        } catch (Exception e) {
            System.out.println(e.toString());
        }
        return this.acceso;
    }

    public String getId_user() {
        return this.id;
    }

    public void logout() {
        this.acceso = false;
    }

    public boolean isLogged() {
        return this.acceso;
    }

}

Test BD Java

package pqConexion;

public class TestBD {
    public static void main(String[] args) {
        System.out.println("EJECUCION SQL");
        Transactions jlpc = new Transactions();
        
        System.out.println("Realizar una conexion a la base de datos");
        jlpc.conectar();
        
        System.out.println("\nINSERCION DE DATOS");
        jlpc.insertarUsuario("USUARIOS", "11", "Juan", "Perez", "juan", "p1234", "HT3435DGVFG");
        
        System.out.println("\nCONSULTAR DE DATOS");
        //jlpc.buscar("USUARIOS", "11");
        
        System.out.println("\nACTUALIZACION DE DATOS");
        jlpc.modificarUsuario("USUARIOS", "11", "Juana", "de Perez", "juan", "x765", "CT3435DGVFN");
        
        System.out.println("\nELIMINACION DE DATOS");
        //jlpc.eliminarUsuario("USUARIOS", "9");
    }
}

Operaciones BD Java

package pqConexion;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.sql.*;

/**
 *
 * @author Jorge Luis Perez Canto
 */
import pqSecurity.SecurityInterface;

public class Transactions {

    private Conexion conexionClass;
    private Connection conexion;
    private Statement sentencia;
    private String cadenaSQL;
    private SecurityInterface sI = new SecurityInterface();

    public Transactions() {
        this.conexionClass = new Conexion();
        sentencia = null;
    }

    public void conectar() {
        try {
            this.conexion = this.conexionClass.getConexion();
            if (sentencia != null) {
                sentencia.close();
                sentencia = null;
            }
        } catch (SQLException e) {
            System.out.println("SQLException: No se puede establecer conección con el servidor");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("Exception: No se puede establecer conección con el servidor");
            System.out.println(e.toString());
            e.printStackTrace();
        }
    }

    public void buscar(String tabla) {
        conectar();
        boolean r = false;
        Statement miStatement = null;
        ResultSet rs = null;
        try {
            System.out.println("Iniciando la busqueda de datos...");
            miStatement = this.conexionClass.getConexion().createStatement();
            String cadena = "SELECT * FROM " + tabla + "";
            System.out.println(cadena);
            rs = miStatement.executeQuery(cadena);

            if (rs != null) {
                while (rs.next()) {
                    System.out.println("ID: " + rs.getString("id") + " NOMBRE: " + rs.getString("nombre") + " APELLIDO: " + rs.getString("apellido") + "");
                }
            }

        } catch (SQLException e) {
            System.out.println("Ocurrio un error al intentar realizar la operación.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            cerrarResultSet(rs);
            cerrarPstmt(miStatement);
            closeConnection();
        }
    }

    public boolean buscar(String tabla, String id) {
        conectar();
        boolean r = false;
        Statement miStatement = null;
        ResultSet rs = null;
        try {
            System.out.println("Iniciando la busqueda de datos...");
            miStatement = this.conexionClass.getConexion().createStatement();
            String cadena = "SELECT * FROM " + tabla + " WHERE id='" + id + "'";
            System.out.println(cadena);
            rs = miStatement.executeQuery(cadena);

            if (rs != null) {
                if (rs.next()) {
                    r = true;
                    System.out.println("ID: " + rs.getString("id") + " NOMBRE: " + rs.getString("nombre") + " APELLIDO: " + rs.getString("apellido") + "");
                } else {
                    System.out.println("Los datos solicitados no existen en la tabla: " + tabla);
                    r = false;
                }
            }

        } catch (SQLException e) {
            System.out.println("Ocurrio un error al intentar realizar la operación.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            cerrarResultSet(rs);
            cerrarPstmt(miStatement);
            closeConnection();
        }
        return r;
    }

    // INSERTAR:
    public void insertarUsuario(String tabla, String id, String nombre, String apellido, String login, String password, String sessionid) {
        conectar();
        String estado = "";
        Statement miStatement = null;
        if (buscar(tabla, id) == false) {
            System.out.println("Procediendo el proceso de inserción...");
            try {
                System.out.println("Iniciando la inserción...");
                miStatement = this.conexionClass.getConexion().createStatement();
                String cadena = "INSERT INTO " + tabla + " (ID, NOMBRE, APELLIDO, LOGIN, SESSIONID, PASSWORD) VALUES ('" + id + "', '" + nombre + "', '" + apellido + "', '" + login + "', '" + sessionid + "', '" + password + "')";
                System.out.println(cadena);
                miStatement.executeUpdate(cadena);
                System.out.println("Datos insertados correctamente.");
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            } catch (Exception e) {
                System.out.println(e.getMessage());
            } finally {
                cerrarPstmt(miStatement);
                closeConnection();
            }
        } else {
            System.out.println("No se puede realizar la inserción porque ya existe un registro con el mismo ID");
        }
    }

    // ACTUALIZAR:
    public void modificarUsuario(String tabla, String id, String nombre, String apellido, String login, String password, String sessionid) {
        conectar();
        Statement miStatement = null;
        if (buscar(tabla, id)) {
            conectar();
            String cadena = "UPDATE " + tabla + " SET nombre='" + nombre + "', apellido='" + apellido + "', login='" + login + "', password='" + password + "', sessionid='" + sessionid + "' WHERE id='" + id + "'";
            System.out.println(cadena);
            try {
                System.out.println("Iniciando el proceso de actualización...");
                miStatement = this.conexionClass.getConexion().createStatement();
                miStatement.executeUpdate(cadena);
                System.out.println("Datos actualizados correctamente.");
            } catch (SQLException e) {
                System.out.println(e.getMessage());;
            } finally {
                cerrarPstmt(miStatement);
                closeConnection();
            }
        } else {
            System.out.println("No se puede realizar la actualización porque no existe ningún registro con ese número de ID.");
        }
    }

    // ELIMINAR:
    public String eliminarUsuario(String tabla, String id) {
        String estado = null;
        if (buscar(tabla, id)) {
            conectar();
            PreparedStatement pstmt = null;
            Statement miStatement = null;
            String cadena = "DELETE FROM " + tabla + " WHERE id='" + id + "'";
            try {
                System.out.println("Iniciando el proceso de eliminación...");
                miStatement = this.conexionClass.getConexion().createStatement();
                miStatement.executeUpdate(cadena);
                System.out.println("Datos eliminados exitosamente.");

            } catch (SQLException e) {
                estado = e.getMessage();
            } finally {
                cerrarPstmt(miStatement);
                closeConnection();
            }
        } else {
            System.out.println("No se puede realizar la eliminación porque no existe ningún registro con ese número de ID.");
        }
        return estado;
    }

    // OTROS MÉTODOS
    private void cerrarSentencia(Statement sentencia) {
        if (sentencia != null) {
            try {
                sentencia.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
            sentencia = null;
        }
    }

    private void cerrarResultSet(ResultSet rs) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    private void cerrarPstmt(PreparedStatement pstmt) {
        if (pstmt != null) {
            try {
                pstmt.close();
                pstmt = null;
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    private void cerrarPstmt(Statement pstmt) {
        if (pstmt != null) {
            try {
                pstmt.close();
                pstmt = null;
            } catch (SQLException e) {
                System.out.println(e.getMessage());
            }
        }
    }

    public void cerrarConexion() {
        if (this.conexion != null) {
            try {
                //this.conexion.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }

    protected void closeConnection() {
        try {
            if (this.conexion != null) {
                //this.conexion.close();
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public List<Map<String, Object>> obtenerArregloResultados(ResultSet rs) {
        List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
        ResultSetMetaData metaData = null;
        int columnCount = 0;
        try {
            metaData = rs.getMetaData();
            columnCount = metaData.getColumnCount();

            while (rs.next()) {
                Map<String, Object> columns = new LinkedHashMap<String, Object>();
                for (int i = 1; i <= columnCount; i++) {
                    columns.put(metaData.getColumnLabel(i), rs.getObject(i));
                }
                rows.add(columns);
            }
        } catch (SQLException e) {
            System.out.println("Error al intentar convertir un ResultSet a un Arreglo.");
            System.out.println(e.getMessage());
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return rows;
    }

    public List<Map<String, Object>> sesion(String tabla, String usuario, String password) {
        conectar();
        Statement miStatement = null;
        ResultSet result = null;
        List<Map<String, Object>> rs = null;
String cadena = "SELECT id, login, password FROM " + tabla + " WHERE login="+usuario+" AND password="+password+"";
        try {
            System.out.println("Iniciando la verificación de credenciales...");
            miStatement = this.conexionClass.getConexion().createStatement();
            System.out.println(cadena);
            result = miStatement.executeQuery(cadena);

            if (result != null) {
                rs = obtenerArregloResultados(result);
            }
            
            if (result != null) {
                if (result.next()) {
                    System.out.println("ID: " + result.getString("id") + " NOMBRE: " + result.getString("nombre") + " APELLIDO: " + result.getString("apellido") + "");
                } else {
                    System.out.println("Los datos solicitados no existen en la tabla: " + tabla);
                }
            }
            
        } catch (SQLException e) {
            System.out.println("Ocurrio un error al intentar comprobar credenciales.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("Ocurrio un error al intentar comprobar credenciales.");
            System.out.println(e.getMessage());
            e.printStackTrace();
        } finally {
            cerrarResultSet(result);
            cerrarPstmt(miStatement);
            closeConnection();
        }
        return rs;
    }

}

Conexión BD Java

package pqConexion;

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

public class Conexion {

    private Connection conexion;

    public Conexion() {
        this.conexion = conecta();
    }

    protected Connection conecta() {
        if (this.conexion != null) {
            try {
                this.conexion.close();
            } catch (SQLException e) {
                System.out.println("Error al cerrar la conexion");
                System.out.println(e.getMessage());
            }
        }
        conexion = null;

        if (this.conexion == null) {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                String url = "jdbc:oracle:thin:@localhost:1521:xe";
                //String user = "prueba";
                String user = "SYSTEM";
                String pass = "prueba";
                this.conexion = DriverManager.getConnection(url, user, pass);
                System.out.println("Conexion establecida!!!");
            } catch (SQLException | ClassNotFoundException e) {
                System.out.println("Error en la conexión de la base de datos");
                System.out.println(e.getMessage());
            }
        }
        return conexion;
    }

    public Connection getConexion() {
        //this.conexion = conecta();
        return this.conexion;
    }

}