Formulario en Java.docx

16
Formulario de acceso con Java y MySQL 21 comentarios Publicado por lovelessisma en agosto 24, 2010 Hola a todos, lo que vamos a hacer ahora es un formulario de login (¿si saben lo que es “login”, no?) desarrollado totalmente en Java, y para validar el acceso haremos uso de una base de datos MySql. Para empezar, contarte que para poder realizar este ejemplo necesitas lo siguiente: 1. Una plataforma de desarrollo en Java: sea Eclipse, sea Netbeans, pero por favor para este ejemplo usa Eclipse. 2. Gestor de base de datos MySql: br /> Con el nombre: EjemploLogin (en realidad puede ser el nombre que ustedes quieran), luego hacemos click en “Finish” (por ahora no haremos click en el botón “Next >” porque por el momento no nos interesa).

Transcript of Formulario en Java.docx

Page 1: Formulario en Java.docx

Formulario de acceso con Java y MySQL21 comentarios Publicado por lovelessisma en agosto 24, 2010

Hola a todos, lo que vamos a hacer ahora es un formulario de login (¿si saben lo que es “login”, no?) desarrollado totalmente en Java, y para validar el acceso haremos uso de una base de datos MySql.

Para empezar, contarte que para poder realizar este ejemplo necesitas lo siguiente:

1. Una plataforma de desarrollo en Java: sea Eclipse, sea Netbeans, pero por favor para este ejemplo usa Eclipse.

2. Gestor de base de datos MySql: br />

Con el nombre: EjemploLogin (en realidad puede ser el nombre que ustedes quieran), luego hacemos click en “Finish” (por ahora no haremos click en el botón “Next >” porque por el momento no nos interesa).

Ahora bien, para poder realizar un buen trabajo necesitamos agregar un archivo .jar necesario para poder conectarnos al gesto MySql que tengamos instalado. En este caso hago uso del mysql-connector-java, el cual lo puedes descargar desde aquí.

Para agregar dicho conector primero haremos anti-click en el directorio de nuestro proyecto, y seleccionamos la opción “Build Path” y luego “Configure Build Path…”, de esta forma:

Page 2: Formulario en Java.docx

Se nos abrirá el siguiente cuadro de diálogo:

Seleccionamos la pestaña “Libraries” (por si no está seleccionada), y haremos click en el botón “Add External JARs…”, y luego exploramos hasta encontrar la ubicación del conector que acabamos de descargar, y le hacemos doble-click al archivo .jar.

De esta manera se añaden archivos .jar al proyecto. La finalidad de esto es obvia: sin este archivo no podríamos conectar a MySql, en otras palabras, lo que acabamos de agregar es un driver de conexión.Muy bien, empezaremos luego a crear los paquetes necesarios para una mejor organización de nuestro código, separando de esta manera las clases de conexión y manejo de datos con las de interfaz gráfica de usuario, simplemente haciendo anti-click en el directorio “src” del proyecto, seleccionamos “New” y luego hacemos click en “Package”.

Page 3: Formulario en Java.docx

Así debe quedar.

Llegados hasta ahí, iremos a la consola o interfaz gráfica que tengamos para crear nuestra base de datos en MySql. El código es el siguiente:

Código:

ver fuente

imprimir ?

1 CREATE DATABASE bd_samplelogin;

2 USE bd_samplelogin;

3 CREATE TABLE `tm_usuario` (

4 `tm_idusuario` int (11) PRIMARY KEY NOT NULL AUTO_INCREMENT,

5 `tm_login` varchar (50),

6 `tm_password` varchar (38) 

7 );

A la tabla “tm_usuario” le añadirás los usuarios y las claves que te apetezcan.Ahora bien, volviendo a Eclipse, agregamos al paquete isma.db una clase para conectarnos a la base de datos: Código:

ver fuente

imprimir ?

01

package isma.db;

02

03

import java.sql.Connection;

04

import java.sql.DriverManager;

05

import java.sql.SQLException;

06

public class DbConnection {   

07

    static String bd = "bd_samplelogin";   

0     static String login = "root";   

Page 4: Formulario en Java.docx

8

09

    static String password = "";   

10

    static String url = "jdbc:mysql://localhost/" + bd;   

11

    Connection conn = null;   

12

    public DbConnection() {      

13

        try {        

14

            Class.forName("com.mysql.jdbc.Driver");

15

            conn = DriverManager.getConnection(url, login, password);

16

        }

17

        catch(SQLException e){

18

            System.out.println(e);

19

        }

20

        catch(ClassNotFoundException e){

21

            System.out.println(e);

22

        }

23

    }

24

    public Connection getConnection(){

25

        return conn;

26

    }

27

    public void desconectar(){

28

        conn = null;

29

    }

3 }

Page 5: Formulario en Java.docx

0

Y agregamos otra para interactuar con la tabla “tm_usuario”:

Código:

01

package isma.db;

02

import java.sql.*;

03

  

04

public class DbUsuario {

05

    DbConnection cn;

06

    public DbUsuario() {

07

        cn = new DbConnection();

08

    }

09

    public Object[][] UsuarioAcceder(String login, String password){

10

        int registros = 0;

11

        try {

12

            PreparedStatement pstm = cn.getConnection().prepareStatement("SELECT count(1) as cont" +

13

            " FROM tm_usuario");

14

            ResultSet res = pstm.executeQuery();

15

            res.next();

16

            registros = res.getInt("cont");

17

            res.close();

18

        }

19

        catch(SQLException e){

20

            System.out.println(e);

2         }

Page 6: Formulario en Java.docx

1

22

        Object [][] data = new Object[registros][3];

23

        if (login.length() != 0 && password.length() != 0){

24

            int usu_id;

25

            String usu_login = "";

26

            String usu_password = "";

27

            try {

28

                String strsql = "";

29

                strsql = "SELECT * FROM tm_usuario WHERE tm_login = '" + login + "' AND tm_password = '" + password + "'";

30

                PreparedStatement pstm = cn.getConnection().prepareStatement(strsql);

31

                ResultSet res = pstm.executeQuery();

32

                int i = 0;

33

                while(res.next()){

34

                    usu_id = res.getInt("tm_idusuario");

35

                    usu_login = res.getString("tm_login");

36

                    usu_password = res.getString("tm_password");

37

                    data[i][0] = usu_id;

38

                    data[i][1] = usu_login;

39

                    data[i][2] = usu_password;

40

                    i++;

41

                }

42

                res.close();

4             }

Page 7: Formulario en Java.docx

3

44

            catch(SQLException e){

45

                System.out.println(e);

46

            }

47

        }

48

        return data;

49

    }

50

}

La clase “DbUsuario” contiene (como podrán haber visto) una función llamada “UsuarioAcceder”, la cual recibirá dos parámetros: el usuario y la clave de acceso. Si el usuario y la clave no se encuentran al momento de realizarse la consulta, o los datos ingresados son incorrectos, o simplemente no existen en la base, por lo tanto al objeto de array bidimensional “data” no se le asignará valores, y si se les asignará cuando los datos sean correctos.No hay mucho que comentar sobre el anterior código, salvo indicar que la consulta anterior a la del acceso sirve para definir la cantidad de ítems que contendrá inicialmente la variable “data”, ya que en Java los arrays de objetos deben ser inicializados antes de ser usados.

Definamos ahora la estructura del formulario principal (es decir, hacia donde queremos acceder). Para esto agregamos una clase en el paquete isma.gui. El formulario va a tener como aditivo a este ejemplo una barra de menú:

Código:

01

package isma.gui;

02

  

03

import java.awt.event.*;

04

import javax.swing.*;

05

  

06

public class frmMain extends JFrame {

07

    private static final long serialVersionUID = 1L;

08

    private JMenuBar barramenu;

09

    public frmMain()

10

    {

Page 8: Formulario en Java.docx

11

        super("SISTEMA EJEMPLO LOGIN");

12

    }

13

      

14

    public void mostrarForm(boolean mostrar){

15

        if (mostrar == true){

16

            barramenu = new JMenuBar(); 

17

            JMenu menuArchivo = new JMenu("Configuración y Mantenimiento");

18

            menuArchivo.setMnemonic('C');

19

                          

20

            JMenuItem itemAcerca = new JMenuItem("Acerca de...");

21

            itemAcerca.setMnemonic('A');

22

            menuArchivo.add(itemAcerca);

23

            itemAcerca.addActionListener(

24

                    new ActionListener() {

25

                        public void actionPerformed(ActionEvent evento)

26

                        {

27

                            JOptionPane.showMessageDialog(frmMain.this,

28

                                    "Ejemplo Login",

29

                                    "Acerca de", JOptionPane.INFORMATION_MESSAGE);

30

                        }

31

                    } 

32

            );

Page 9: Formulario en Java.docx

33

            JMenuItem itemSalir = new JMenuItem("Salir");

34

            itemSalir.setMnemonic('S');

35

            menuArchivo.add(itemSalir);

36

            itemSalir.addActionListener(

37

                    new ActionListener(){

38

                        public void actionPerformed(ActionEvent evento)

39

                        {

40

                            System.exit(0);

41

                        }

42

                    }

43

            );

44

            barramenu.add(menuArchivo);  

45

            setJMenuBar(barramenu);

46

            setSize(1022, 700);

47

            setLocationRelativeTo(this.getParent());

48

            setVisible(mostrar);

49

            setDefaultCloseOperation(EXIT_ON_CLOSE);

50

        }

51

    }

52

}

La función “mostrarForm” nos servirá para controlar cuando queremos que el formulario principal aparezca. En este caso es preciso que aparezca justo después de comprobar que los datos ingresados en el formulario de login sean correctos. Ahora la estrella de este artículo:

Código:

Page 10: Formulario en Java.docx

001

package isma.gui;

002

  

003

import java.awt.*;

004

import java.awt.event.*;

005

import javax.swing.*;

006

  

007

import isma.db.*;

008

  

009

public class frmLogin extends JFrame {

010

    private static final long serialVersionUID = 1L;

011

    private JTextField txtusuario;

012

    private JPasswordField txtpassword;

013

    private JButton btnAceptar, btnCancelar;

014

    private JLabel lblusuario, lblpassword;

015

    private Container contenedor;

016

    private GridLayout cuadricula1;

017

    public frmLogin()

018

    {

019

        super("Acceso al Sistema");

020

        cuadricula1 = new GridLayout(3, 3, 10, 10);

021

          

022

        lblusuario = new JLabel("Usuario:");

023

        lblpassword = new JLabel("Clave:");

024

          

025

        txtusuario = new JTextField(10);

026

        txtpassword = new JPasswordField(10);

027

          

028

        btnAceptar = new JButton("Aceptar");

029

        btnAceptar.setMnemonic('A');

Page 11: Formulario en Java.docx

030

        ImageIcon imgAceptar = new ImageIcon("img/user_go.png");

031

        btnAceptar.setIcon(imgAceptar);

032

          

033

        btnCancelar = new JButton("Cancelar");

034

        btnCancelar.setMnemonic('C');

035

        ImageIcon imgCancelar = new ImageIcon("img/sign_cancel.gif");

036

        btnCancelar.setIcon(imgCancelar);

037

          

038

        contenedor = getContentPane();

039

        contenedor.setLayout(cuadricula1);

040

        contenedor.add(lblusuario);

041

        contenedor.add(txtusuario);

042

        contenedor.add(lblpassword);

043

        contenedor.add(txtpassword);

044

        contenedor.add(btnAceptar);

045

        contenedor.add(btnCancelar);

046

          

047

        btnAceptar.addActionListener( 

048

            new ActionListener()

049

            {

050

                @SuppressWarnings("deprecation")

051

                public void actionPerformed(ActionEvent evento)

052

                {

053

                    DbUsuario user = new DbUsuario();

054

                    frmMain principal = new frmMain();

055

                      

056

                    String usuario;

057

                    String clave;

058

                      

Page 12: Formulario en Java.docx

059

                    usuario = txtusuario.getText();

060

                    clave = txtpassword.getText();

061

                      

062

                    try {

063

                        Object[][] itemUsuario = user.UsuarioAcceder(usuario, clave);

064

                        String x_iduser = itemUsuario[0][0].toString();

065

                        String x_user = itemUsuario[0][1].toString();

066

                        String x_pass = itemUsuario[0][2].toString();

067                         if ((x_user != "") && (x_pass != ""))

068                         {

069                             JOptionPane.showMessageDialog( frmLogin.this,

070                                     "Bienvenido al sistema usuario: " + x_user + ", con id: " + x_iduser,

071                                     "Acerca de", JOptionPane.INFORMATION_MESSAGE );

072                             principal.mostrarForm(true);

073                             principal.setLocationRelativeTo(principal.getParent());

074                             dispose();

075                         }

076                     }

077                     catch(Exception e){

078                         JOptionPane.showMessageDialog( frmLogin.this,

079                                 "Usuario o contraseña incorrecto",

080                                 "Acerca de", JOptionPane.ERROR_MESSAGE );

081                     }

082                 }

083             }

084         );

085           

086         btnCancelar.addActionListener(

087             new ActionListener() {

088                 public void actionPerformed( ActionEvent evento )

089                 {

090                     System.exit(0);

Page 13: Formulario en Java.docx

091                 }

092             }

093         );

094           

095         setDefaultCloseOperation(EXIT_ON_CLOSE);

096         setResizable(false);

097         setSize(300, 150);

098         setVisible(true);

099         setLocationRelativeTo(this.getParent());

100     }

101 }

Lo interesante de este formulario es lo siguiente: 1. Importación del paquete “isma.db”: import isma.db.*; 2. Los botones tienen imágenes vistosas como iconos. 3. Las variables de usuario y contraseña que recogen los datos de la función “UsuarioAcceder” serán asignadas

siempre y cuando se compruebe que la autenticación sea correcta. Y para terminar, una clase que ejecute todo en el terminal principal:

Código:

01

package isma.gui;

02

import javax.swing.*;

03

  

04

public class EjemploLogin {

05

    public static void main( String args[] )

06

    {

07

        JFrame.setDefaultLookAndFeelDecorated(true);

08

        try {

09

            UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

10

        }

11

        catch (Exception e){   

12

            System.out.println(e);

13

        }

14

        frmLogin aplicacion = new frmLogin();

15

        aplicacion.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );

Page 14: Formulario en Java.docx

16

    } 

17

}

Fíjense en la siguiente línea:UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"); Esto define el tema visual de la aplicación, es decir, tu aplicación en Java pasa de esto:

A esto:

Sin punto de comparación.Si quieres puedes borrarlo (ojo: todo el try), pero sinceramente te habrás dado cuenta que queda estupendo.

Ahora sólo nos queda correr nuestra aplicación, para eso tecleamos Ctrl + F11:

Y eso ha sido todo damas y caballeros, muy pronto más ejemplos con Java, y muchas sorpresas.

Nota: Los iconos de los botones del formulario "frmLogin" se encuentran en el archivo descargable de la parte inferior de estas líneas.

Page 15: Formulario en Java.docx