Páginas

Pesquisar este blog

Mostrando postagens com marcador mysql. Mostrar todas as postagens
Mostrando postagens com marcador mysql. Mostrar todas as postagens

domingo, 21 de março de 2010

Java para Web - Aprendendo a programar - Parte II - JSP, Javabean, Mysql com login criptografado

Nesta segunda parte vou postar os códigos que consegui desenvolver durante este período. Consegui fazer um pequeno código, com autenticacao usando o banco de dados mysql, consulta de cadastro e inclusão no banco de dados.

Desculpem me se o código estiver um tanto quanto tosco. Lembro que estou apenas aprendendo.

index.jsp


<%-- 
    Document   : index
    Created on : 16/03/2010, 15:39:11
    Author     : Alexandro Félix Pereira
--%>


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">


<%--Cria instâncias das classes userBean e UserDataBean--%>
<jsp:useBean id="user" class="com.vignette.vps.UserBean" scope="page"/>
<jsp:useBean id="userData" class="com.vignette.vps.UserDataBean" scope="page"/>


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Pet Plus</title>
    </head>
    <body>
        <%-- Seta todas as propriedades do java bean UserBean, que
         equivalem ao nome dos campos "input" abaixo --%>
        <jsp:setProperty name="user" property="*"/>
        <%
        /*Testa se os campos userName ou senha são diferente de null, caso algum seja,
        significa que temos uma consulta à ser realizada, caso contrário exibe os
        campos para consulta*/
        if(user.getUserName() == null |
           user.getSenha() == null){
        %>
        <form action="index.jsp" method="post">
            <table>
                <tr><th>Usuário:</th>
                    <th><input name="userName" type="text"/></th>
                </tr>
                <tr><th>Senha:</th>
                    <th><input name="senha" type="password"/></th>
                </tr>
            </table>
            <input type="submit" name="Entrar" value="Enviar"/>
        </form>
    <%
    /*Verifica as credenciais do usuário, caso o retorno seja "true", redireciona
      o usuário para home.jsp*/
    }else if(userData.getCredentials(user.getUserName(), user.getSenha())){
    %>
        <jsp:forward page = "home.jsp"/>
    <%
    /*Caso usuário ou senha estejam incorretos, será exibida a mensagem abaixo  */
    }else{
        out.println("Usuário ou senha incorretos");      
    %>
    <br />
    <%-- Link recarrega a pagina apos insercao de dados incorreta --%>
    <a href="index.jsp">Voltar</a>    
    <% } %><%-- finaliza o "else" --%>
    </body>
</html>


##################################################
home.jsp



<%-- 
    Document   : home
    Created on : 16/03/2010, 16:17:01
    Author     : Alexandro Félix Pereira
--%>


<%@page contentType="text/html" pageEncoding="UTF-8"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Pet Plus</title>
    </head>
    <body>
        <h2><strong>O que deseja fazer?</strong></h2>
        <table>
            <tr>
                <th><a href="listaClientes.jsp">Consultar Clientes</a></th>
            </tr>
            <tr>
                <th><a href="incluirClientes.jsp">Cadastrar Clientes</a></th>
            </tr>
        </table>        
    </body>
</html>


##################################################
listaClientes.jsp

<%-- 
    Document   : listaClientes
    Created on : 17/03/2010, 12:31:29
    Author     : Alexandro Félix Pereira
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%--Cria instâncias das classes userBean e UserDataBean--%>
<jsp:useBean id="userData" class="com.vignette.vps.UserDataBean" scope="page"/>
<jsp:useBean id="user" class="com.vignette.vps.UserBean" scope="page"/>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Consulta Clientes</title>
    </head>
    <%--Seta prpriedades--%>
    <jsp:setProperty name="user" property="*"/>
    <%-- Se nome ou id igual null, exibe a página para consulta --%>
    <%
    if((user.getId() == null && user.getNome() == null)){
    %>
    <body>
        <h2><strong>O que deseja fazer?</strong></h2>
        <form action="listaClientes.jsp">
        <table>
            <tr>
                <th align="left">Id:</th>
                <th align="left"><input type="text" name="id" value="" size="30" /></th>
            </tr>
            <tr>
                <th align="left">Nome do cliente:</th>
                <th align="left"><input type="text" name="nome" value="" size="30" /></th>
            </tr>            
        </table>
            <input type="submit" value="Consultar" name="consultar" />
        </form>
    <%  /*
        se o retorno do metodo listaClientes for verdadeiro, exibe o resultado
        da consulta
        */
        }else if(userData.listaClientes(user.getNome(), user.getId())){
    %>
        <table width="90%" border="1">
          <tr>
    <%  // write out the header cells containing the column labels
         for (int i=1; i<=userData.getColumns(); i++) {
              out.write("<th>" + userData.getRsmd().getColumnLabel(i) + "</th>");
         }
    %>
    </tr>
    <% // now write out one row for each entry in the database table
         while (userData.getResult().next()) {
            out.write("<tr>");
            for (int i=1; i<=userData.getColumns(); i++) {
               out.write("<td>" + userData.getResult().getString(i) + "</td>");
            }
            out.write("</tr>");
         }     
     }
    %>
    </table>
    </body>
</html>
##################################################
incluirClientes.jsp
<%-- 
    Document   : incluirClientes
    Created on : Mar 21, 2010, 6:05:29 PM
    Author     : rideick
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<%--Cria instâncias das classes userBean e UserDataBean--%>
<jsp:useBean id="user" class="com.vignette.vps.UserBean" scope="request"/>
<jsp:useBean id="userData" class="com.vignette.vps.UserDataBean" scope="request"/>

<HTML>
    <HEAD><META http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <TITLE>Incluir Clientes</TITLE>
    </HEAD>
    <BODY>
        <%-- Define as propriedades do bean user--%>
        <jsp:setProperty name="user" property="*"/>
        <%
        //se nome diferente de null exibe a página para inclusão de cliente
        if(user.getNome() == null){
        %>
        <H3>Incluir Cliente</H3>
        <FORM action="incluirClientes.jsp" method="get">
            <TABLE>
                <TBODY><TR><TH align="left">Nome do Cliente:</TH>
                    <TH><INPUT type="text" name="nome" value="" size="60"></TH>
                </TR>
                <TR><TH align="left">Endereço:</TH>
                    <TH><INPUT type="text" name="end1" value="" size="60"></TH>
                </TR>
                <TR><TH align="left">Endereço Secundário:</TH>
                    <TH><INPUT type="text" name="end2" size="60"></TH>
                </TR>
                <TR><TH align="left">CEP:</TH>
                    <TH><INPUT type="text" name="cep" size="60"></TH>
                </TR>
                <TR><TH align="left">Cidade:</TH>
                    <TH><INPUT type="text" name="cidade" size="60"></TH>
                </TR>
                <TR><TH align="left">Estado</TH>
                    <TH><INPUT type="text" name="estado" size="60"></TH>
                </TR>
                <TR><TH align="left">Telefone:</TH>
                    <TH><INPUT type="text" name="telefone" size="60"></TH>
                </TR>
                <TR><TH align="left">Fax:</TH>
                    <TH><INPUT type="text" name="fax" size="60"></TH>
                </TR>
                <TR><TH align="left">E-mail:</TH>
                    <TH><INPUT type="text" name="email" size="60"></TH>
                </TR>
                <TR><TH align="left">Código de Desconto:</TH>
                    <TH><INPUT type="text" name="cod_desc" size="60"></TH>
                </TR>
                <TR><TH align="left">Limite de Crédito:</TH>
                    <TH><INPUT type="text" name="lim_cred" size="60"></TH>
                </TR>
            </TBODY></TABLE>
            <INPUT type="submit" value="Incluir" name="incluir">
        </FORM>
        <%
        }else{
            //construcao do sql para inclusão do cliente
            userData.setSql(user.getId(),user.getNome(),user.getEnd1(),user.getEnd2(),
                            user.getCep(),user.getCidade(),user.getEstado(),user.getTelefone(),
                            user.getFax(),user.getEmail(),user.getCod_desc(),user.getLim_cred());
            //se as linhas afetadas maior ou igual a 1, exibe mensagem de sucesso.
         }if(userData.getLinhas() >= 1){
        %>
        <strong>Dados inseridos com sucesso</strong><br />
        <a href="incluirClientes.jsp">Voltar</a>
        <%
        }
        %>
    </BODY>
</HTML>
##################################################
UserBean.java

package com.vignette.vps;

import java.io.Serializable;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 *
 * @author rideick
 */
public class UserBean implements Serializable{

    private String userName,senha,id,nome,end1,end2,
                   cep,cidade,estado,telefone,fax,email,
                   cod_desc,lim_cred;

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the senha
     */
    public String getSenha() {
        return senha;
    }

    /**
     * @param senha the senha to set
     */
    public void setSenha(String senha) {

        try {
        MessageDigest md5 = MessageDigest.getInstance("MD5");
        md5.update(senha.getBytes());
        BigInteger hash = new BigInteger(1, md5.digest());
        senha = hash.toString(16);
        } catch (NoSuchAlgorithmException nsae) {

        }

        this.senha = senha;
    }

    /**
     * @return the id
     */
    public String getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * @return the userName
     */
    public String getUserName() {
        return userName;
    }

    /**
     * @param userName the userName to set
     */
    public void setUserName(String userName) {
        this.userName = userName;
    }

    /**
     * @return the end1
     */
    public String getEnd1() {
        return end1;
    }

    /**
     * @param end1 the end1 to set
     */
    public void setEnd1(String end1) {
        this.end1 = end1;
    }

    /**
     * @return the end2
     */
    public String getEnd2() {
        return end2;
    }

    /**
     * @param end2 the end2 to set
     */
    public void setEnd2(String end2) {
        this.end2 = end2;
    }

    /**
     * @return the cep
     */
    public String getCep() {
        return cep;
    }

    /**
     * @param cep the cep to set
     */
    public void setCep(String cep) {
        this.cep = cep;
    }

    /**
     * @return the cidade
     */
    public String getCidade() {
        return cidade;
    }

    /**
     * @param cidade the cidade to set
     */
    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    /**
     * @return the estado
     */
    public String getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }

    /**
     * @return the telefone
     */
    public String getTelefone() {
        return telefone;
    }

    /**
     * @param telefone the telefone to set
     */
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    /**
     * @return the fax
     */
    public String getFax() {
        return fax;
    }

    /**
     * @param fax the fax to set
     */
    public void setFax(String fax) {
        this.fax = fax;
    }

    /**
     * @return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

    /**
     * @return the cod_desc
     */
    public String getCod_desc() {
        return cod_desc;
    }

    /**
     * @param cod_desc the cod_desc to set
     */
    public void setCod_desc(String cod_desc) {
        this.cod_desc = cod_desc;
    }

    /**
     * @return the lim_cred
     */
    public String getLim_cred() {
        return lim_cred;
    }

    /**
     * @param lim_cred the lim_cred to set
     */
    public void setLim_cred(String lim_cred) {
        this.lim_cred = lim_cred;
    }

}
##################################################
UserDataBean.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.vignette.vps;

import javax.naming.NamingException;
import javax.sql.*;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;

/**
 *
 * @author Alexandro Felix Pereira
 */
public class UserDataBean {
    
    private Statement pstmt = null;
    private PreparedStatement pst = null;
    private ResultSetMetaData rsmd = null;
    private ResultSet result = null;
    private Context ctx = new InitialContext();
    private DataSource ds = (DataSource) ctx.lookup("petplus");
    private Connection connection = ds.getConnection();

    String usrName, pass;
    private boolean credentials = false;
    private int columns = 0;
    private int linhas = 0;

    private String sql = null;

    UserBean usrBean = new UserBean();

    public UserDataBean()
            throws SQLException, NamingException{
    }

    public boolean getCredentials(String userName, String senha) 
            throws SQLException, NamingException{

        String sql = "SELECT user_name,password " +
                     "FROM users " +
                     "WHERE user_name='" + userName + "' " +
                     "AND password='" + senha + "'";

        try{
            
            setPstmt(getConnection().createStatement());

            setResult(getPstmt().executeQuery(sql));

            while(result.next()){

                if( getResult().getString("user_name").equals(userName) &&
                    getResult().getString("password").equals(senha)){

                    credentials = true;

                }

            }
            
        }
        catch(SQLException e){

            System.out.println("Exception na consulta: SELECT user_name,password " +
                                              "FROM users " +
                                              "WHERE user_name='" + userName + "' " +
                                              "AND password='" + senha + "'" + e);

        }

        return credentials;

    }

    public boolean listaClientes(String nome, String id) throws SQLException{

        setPstmt(getConnection().createStatement());

        try{
        if (ds != null) {

            if(id == null && nome == null){

                    setResult(getPstmt().executeQuery("SELECT customer_id as id, " +
                                                     "name as nome, " + "city as cidade, " +
                                                     "" + "phone as telefone, " + "state as estado, " +
                                                     "addressline1 as endereço, " +
                                                     "addressline2 as endereço_alternativo, " +
                                                     "credit_limit as limite_de_crédito " +
                                                     "FROM customer " +
                                                     "ORDER BY name"));

            }else if(id != null && nome == null){

                    setResult(getPstmt().executeQuery("SELECT customer_id as id, name as nome, city as cidade, " +
                                                      "phone as telefone, state as estado, " +
                                                      "addressline1 as endereço, " +
                                                      "addressline2 as endereço_alternativo, " +
                                                      "credit_limit as limite_de_credito " +
                                                      "FROM customer " +
                                                      "WHERE customer_id=" + id + " " +
                                                      "ORDER BY name"));

            }else if(id != null && nome != null){

                    setResult(getPstmt().executeQuery("SELECT customer_id as id, name as nome, city as cidade, " +
                                                      "phone as telefone, state as estado, " +
                                                      "addressline1 as endereço, " +
                                                      "addressline2 as endereço_alternativo, " +
                                                      "credit_limit as limite_de_credito " +
                                                      "FROM customer " +
                                                      "WHERE customer_id=" + id + " " +
                                                      "AND LOWER(name) LIKE '%" + nome + "%' " +
                                                      "ORDER BY name"));
            }else{

                    setResult(getPstmt().executeQuery("SELECT customer_id as id, name as nome, city as cidade, " +
                                                      "phone as telefone, state as estado, " +
                                                      "addressline1 as endereço, " +
                                                      "addressline2 as endereço_alternativo, " +
                                                      "credit_limit as limite_de_credito " +
                                                      "FROM customer " +
                                                      "WHERE LOWER(name) " +
                                                      "LIKE '%" + nome + "%' " +
                                                      "ORDER BY name"));
            }

            if(result != null ){
                credentials = true;
            }
        }
     }
     catch (SQLException e) {
        System.out.println("Error occurred " + e);
      }
      
      try {
            setRsmd(getResult().getMetaData());
            setColumns(getRsmd().getColumnCount());
      }
      catch (SQLException e) {
         System.out.println("Error occurred " + e);
      }
     return credentials;

    }

    public void setSql(String id,String nome,String end1,String end2,
            String cep,String cidade,String estado,String telefone,
            String fax,String email,String cod_desc,String lim_cred) throws SQLException{
        
        pstmt = connection.createStatement();

        sql = "INSERT INTO customer " +
              "(discount_code, zip, name, " +
              "addressline1, addressline2, city, state, phone, " +
              "fax, email, credit_limit) " +
              "VALUES ('" + cod_desc + "','" +
              cep +"','" + nome + "','" + end1 + "','" + end2 +"','" +
              cidade + "','" + estado + "','" + telefone
              + "','" + fax + "','" + email + "'," + lim_cred + ")";

        setLinhas(pstmt.executeUpdate(sql));
        
    }

    public String getSql(){

        return sql;
    }

    /**
     * @return the columns
     */
    public int getColumns() {
        
        return columns;
    }

    /**
     * @param columns the columns to set
     */
    public void setColumns(int columns) {
        this.columns = columns;
    }

    /**
     * @return the rsmd
     */
    public ResultSetMetaData getRsmd() {
        return rsmd;
    }

    /**
     * @param rsmd the rsmd to set
     */
    public void setRsmd(ResultSetMetaData rsmd) {
        this.rsmd = rsmd;
    }

    /**
     * @return the result
     */
    public ResultSet getResult() {
        return result;
    }

    /**
     * @param result the result to set
     */
    public void setResult(ResultSet result) {
        this.result = result;
    }

    /**
     * @return the connection
     */
    public Connection getConnection() {
        return connection;
    }

    /**
     * @param connection the connection to set
     */
    public void setConnection(Connection connection) {
        this.connection = connection;
    }

    /**
     * @return the pstmt
     */
    public Statement getPstmt() {
        return pstmt;
    }

    /**
     * @param pstmt the pstmt to set
     */
    public void setPstmt(Statement pstmt) {
        this.pstmt = pstmt;
    }  
    /**
     * @return the pst
     */
    public PreparedStatement getPst() {
        return pst;
    }

    /**
     * @param pst the pst to set
     */
    public void setPst(String sql) throws SQLException {

        pst = connection.prepareStatement(sql);
        
    }
    /**
     * @return the linhas
     */
    public int getLinhas() {
        return linhas;
    }

    /**
     * @param linhas the linhas to set
     */
    public void setLinhas(int linhas) {
        this.linhas = linhas;
    }

    @Override
    public void finalize() throws SQLException{

        try{
            result.close();
            connection.close();
            pstmt.close();
        }
        catch(SQLException e){
            System.out.print(e);
        }

    }


}