Vous êtes sur la page 1sur 17

JSP e MySQL Como instalar o driver de conexo JSP + MySQL O primeiro passo para efetuar a conexo JSP + MySQL

baixar o driver que far a ponte entre suas pginas JSP e o banco de dados MySQL. A verso mais recente deste driver chamada de MySQL Connector/J e pode ser baixada no endereo http://dev.mysql.com/downloads. Siga os passos abaixo para configurar o driver corretamente em seu sistema (estas anotaes so para Windows. Mas, poucas alteraes devero ser feitas para que o mesmo funcione no Linux. 1) Baixe o driver e descompacte-o na pasta de sua preferncia; 2) Se for usar o driver em aplicativos Java (e no em aplicaes web), adicione o jar "mysql-connector-java3.1.12-bin.jar" no CLASSPATH de seu sistema. Veja as dicas sobre CLASSPATH para aprender como isso feito; 3) Teste se o driver pode ser carregado com sucesso a partir de um aplicativo. Veja o cdigo que pode ser usado para esta finalidade: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class CarregarDriver{ public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); System.out.println("Driver carregado com sucesso!"); } catch (Exception ex) { System.out.println("Driver nao pode ser carregado!"); } } } Dica: Se o driver no puder ser carregado atravs do CLASSPATH experimente copiar o arquivo mysql-connectorjava-3.1.12-bin.jar para o diretrio C:\\java\\jre\\lib\\ext (o seu deve ser bem parecido).

4) Se o driver for usado em aplicaes web, voc tem duas opes: a) Deixar o driver no CLASSPATH ou diretrio lib\\ext do jre; b) Copiar o driver para o diretrio C:\\Tomcat5\\common\\lib (se estiver usando Tomcat, claro). Em outros containeres e servidores o procedimento o mesmo. 5) Teste se o driver pode ser acessado a partir de uma pgina JSP. Veja um exemplo: <%@ page language="java" import="java.sql.*" errorPage="" %> <html> <head><title>Teste de Carregamento do Driver MySQL</title> </head> <body> <% try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); out.write("Driver Carregado com Sucesso!"); } catch( Exception ex ){ out.write("No foi possvel carregar o driver: " + ex.toString()); } %> </body> </html>

Conexo com MySQL <%@page import="java.sql.*"%> <% Class.forName("org.gjt.mm.mysql.Driver"); Connection Con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ database", "login", "senha"); Statement stm = Con.createStatement(); %> Executando uma Consulta no Banco <%@page import="java.sql.*"%> <% Class.forName("org.gjt.mm.mysql.Driver"); Connection Con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ database", "login", "senha"); Statement stm = Con.createStatement(); ResultSet res = stm.executeQuery("SELECT * FROM emails"); while(res.next()) { out.println("Nome: " + res.getString("nome")); out.println("<br />Email: " + res.getString("email")); } %> Insero (INSERT) de Dados <%@page import="java.sql.*"%> <% Class.forName("org.gjt.mm.mysql.Driver"); Connection Con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ database", "login", "senha"); Statement stm = Con.createStatement(); int res = stm.executeUpdate("INSERT into emails VALUES

('Thales', 'darkthales@terra.com.br')"); if(res > 0){ out.println("Inserido com sucesso."); } else { out.println("Erro ao inserir."); } %> EXEMPLO COMPLETO DE UM SISTEMA DE LOGIN DE USURIOS Para que voc pratique ainda mais seus conhecimentos de formulrios e JSP, apresento a seguir um exemplo completo de como implementar um sistema de login de usurios. O nome de usurio e senha correta estaro definidos previamente. Porm, mais tarde voc poder pegar estes dados de uma base de dados ou de um arquivo texto. 1 - Comece criando a pgina que contm o formulrio com os campos para o nome de usurio e a senha: <html> <head> <title>Aprendendo JSP</title> </head> <body> <form name="login" method="post" action="login.jsp"> Usurio: <input type="text" name="usuario"><br> Senha: <input type="password" name="senha"> <br> </form> </body> </html> 2 - O nome de usurio e a senha informada sero enviados para a pgina login.jsp. Veja o cdigo completo: <html> <head> <input type="submit" value="Enviar!">

<title>Aprendendo JSP</title> </head> <body> <% // usuario e senha corretos String usuario_p = "admin"; "admin1234"; String senha_p =

// dados informados no formulrio String usuario = request.getParameter("usuario"); String senha = request.getParameter("senha"); // verifica se os dados informados esto corretos if((usuario.equals(usuario_p)) && (senha.equals(senha_p))) { /* login efetuado com sucesso. Agora voc pode gravar uma sesso, um cookie ou direcionar o usurio para uma nova pgina */ out.println("Login efetuado com sucesso!"); } else { // dados no conferem. Direcione o usurio para a pgina de login novamente out.println("Dados no conferem. Tente novamente"); } %> </body> </html>

PASSOS BSICOS PARA SE USAR FORMULRIOS EM JSP O uso de formulrios em JSP muito simples. Tudo que voc precisa estar atento aos nomes dos campos do formulrio. Veja um exemplo de um formulrio usado para efetuar login em um site: <form name="login" method="post" action="login.jsp"> Usurio: <input type="text" name="usuario"><br> Senha: <input type="password" name="senha"> <br> <input type="submit" value="Enviar!"> </form> Os dados deste formulrio sero enviados para a pgina login.jsp. Observe os nomes dos campos de texto e senha: "usuario" e "senha". Estes nomes so importantes para a pgina que ser chamada quando o formulrio for enviado. Veja agora o cdigo para a pgina login.jsp: <html> <head> <title>Aprendendo JSP</title> </head> <body> <% String usuario = request.getParameter("usuario"); String senha = request.getParameter("senha"); %> O nome de usurio : <%= usuario %><br> A senha : <%= senha %> </body>

</html> Observe que o valor informado no campo "usuario" obtido com a linha: String usuario = request.getParameter("usuario"); O valor informado no campo "senha" obtido com a linha: String senha = request.getParameter("senha"); Inserindo dados em uma tabela MySQL // conn a conexo com o banco de dados if(conn != null) { // procedimentos para inserir dados em uma tabela Statement query = conn.createStatement(); // o trecho de cdigo abaixo insere trs registros // em uma tabela chamada USUARIOS query.executeUpdate("INSERT INTO USUARIOS " + "VALUES(393, 'Carlos', '1234', 23)"); query.executeUpdate("INSERT INTO USUARIOS " + "VALUES(434, 'Maria', '5555', 31)"); query.executeUpdate("INSERT INTO USUARIOS " + "VALUES(421, 'Jos Carlos', '4321', 54)"); out.println("Dados gravados com sucesso!"); // fim insero } Atualizar os dados em uma tabela MySQL <%@ page language="java" import="java.sql.*" %> <html> <head> <title>Aprendendo JSP</title>

</head> <body> <% // Este exemplo mostra como usar o comando UPDATE // em uma tabela MySQL // o nome da base de dados "test" String url = "jdbc:mysql://localhost/test"; String usuario = "root"; String senha = "1234"; Connection conn = null; Try { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, usuario, senha); } catch(SQLException ex) { out.println("SQLException: " + ex.getMessage() + "<br>"); out.println("SQLState: " + ex.getSQLState() + "<br>"); out.println("VendorError: " + ex.getErrorCode() + "<br>"); } catch(Exception e) { out.println("Problemas ao tentar conectar com o banco de dados"); } // conn a conexo com o banco de dados if(conn != null) { // procedimentos para alterar dados em uma tabela

Statement query = conn.createStatement(); query.executeUpdate("UPDATE USUARIOS SET SENHA = 'admin', IDADE = 35 " + " WHERE CODIGO = 434"); out.println("Alterao efetuada com sucesso!"); // fim alterao } %> </body> </html> Inserir dados em uma tabela MySQL que contm um campo auto-incremento // procedimentos para inserir dados em uma tabela Statement query = conn.createStatement(); // o trecho de cdigo abaixo insere trs registros // em uma tabela chamada USUARIOS // o valor para o campo auto-incremento deve ser // uma string vazia query.executeUpdate("INSERT INTO USUARIOS " + "VALUES('', 393, 'Carlos', '1234', 23)"); query.executeUpdate("INSERT INTO USUARIOS " + "VALUES('', 434, 'Maria', '5555', 31)"); query.executeUpdate("INSERT INTO USUARIOS " + "VALUES('', 421, 'Fernando', '4321', 54)"); out.println("Dados gravados com sucesso!"); // fim insero

Listar todo o contedo de uma tabela <%@ page language="java" import="java.sql.*" %> <html> <head> <title>Aprendendo JSP</title> </head> <body> Listar todo o contedo de uma tabela

<% // Este exemplo mostra como listar todo o contedo // de uma tabela // o nome da base de dados "test" String url = "jdbc:mysql://localhost/test"; String usuario = "root"; String senha = "1234"; Connection conn = null; Try { Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, usuario, senha); } catch(SQLException ex) { out.println("SQLException: " + ex.getMessage() + "<br>"); out.println("SQLState: " + ex.getSQLState() + "<br>"); out.println("VendorError: " + ex.getErrorCode() + "<br>");

} catch(Exception e) { out.println("Problemas ao tentar conectar com o banco de dados"); } // conn a conexo com o banco de dados if(conn != null) { // procedimentos para obter os dados de uma tabela Statement stmt = conn.createStatement(); String query = "SELECT * FROM USUARIOS"; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { int id = rs.getInt("CODIGO"); out.println("ID: " + id + "<br>"); String nome = rs.getString("NOME"); out.println("NOME: " + nome + "<br>"); String s = rs.getString("SENHA"); out.println("SENHA: " + s + "<br>"); int idade = rs.getInt("IDADE"); out.println("IDADE: " + idade + "<br><br>"); } // fim procedimento para obter os dados } %>

</body> </html> Obter a quantidade de registros em uma tabela MySQL // conn a conexo com o banco de dados if(conn != null) { Statement stmtt = conn.createStatement(); ResultSet rc = stmtt.executeQuery("SELECT COUNT(*) FROM CLIENTES"); rc.next(); out.println("Nmero de Registros: " + rc.getInt(1)); } Ordenar os dados em uma tabela MySQL Use ASC para descentente; Use DESC para descentente; String query = "SELECT * FROM CLIENTES WHERE CODIGO > 40 ORDER BY IDADE DESC"; //Para se ordenar os dados baseado em mais de uma coluna //use /* String query = "SELECT * FROM CLIENTES WHERE CODIGO > 40 ORDER BY NOME, IDADE"; */ Redirecionar uma pgina <html> <head> <title>Aprendendo JSP</title> </head> <body>

<% String novaURL = "http://www.google.com/"; response.sendRedirect(novaURL); %> </body> </html> Como gerar uma planilha Excel usando JSP Uma das aplicaes mais solicitadas por desenvolvedores para a Internet aquela que permite gerar uma planilha do Excel a partir de uma pgina dinmica. Em JSP esta tarefa se torna extremamente fcil graas ao uso do atributo contentType nas diretivas de pgina. O atributo contentType permite definir o tipo de MIME do documento retornado para o navegador. Um Mime Type , entre outras coisas, um mtodo usado por navegadores da Internet (Web Browsers) para associar arquivos de um certo tipo com uma determinada aplicao auxiliar, de modo que esta fique responsvel pela exibio de arquivos daquele tipo. O navegador fica ento responsvel por exibir o documento ou requisitar a uma aplicao que suporte o tipo de arquivo que o faa. Neste caso, tudo que temos a fazer definir o valor "application/vnd.ms-excel" para o atributo contentType. O trecho de cdigo abaixo abrir uma planilha do Excel contendo uma linha e quatro colunas. claro que os valores da planilha podero ser gerados a partir de uma base de dados. Veja a listagem: <%@ page language="java" contentType="application/vnd.msexcel" %> <html> <head> <title>Gerar uma planilha do Excel usando JSP</title>

</head> <body> <table border="1"> <tr> <td>Java</td> <td>C/C++</td> <td>Delphi</td> <td>C#</td> </tr> </table> </body> </html> Para aprender a obter valores de checkbox em JSP comece escrevendo o formulrio abaixo: <b>Marque as linguagens de sua preferncia:</b> <br> <form name="lg" method="post" action="linguagens.jsp"> <input type="checkbox" name="linguagem" value="Java"> Java<br> <input type="checkbox" name="linguagem" value="Delphi"> Delphi<br> <input type="checkbox" name="linguagem" value="C#"> C#<br> <input type="checkbox" name="linguagem" value="Visual Basic"> Visual Basic<br> <input type="submit" value="Enviar!"> </form>

Agora escreva a pgina linguagens.jsp: <html> <head><title>Aprendendo JSP</title></head> <body> <% out.println("Voc marcou as seguintes linguagens:<br><br>"); String linguagens[] = request.getParameterValues("linguagem"); for(int i = 0; i < linguagens.length; i++){ out.println(linguagens[i] + "<br>"); } %> </body> </html> APRENDA A CRIAR UMA CLASSE DE CONEXO PARA SUAS PGINA JSP Este exemplo mostra como criar uma classe e us-la para efetuar conexes com uma base de dados. 1) Comece criando a classe abaixo: package estudos; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public final class Conexao { public static Connection conectar() { // base de dados "test" String url = "jdbc:mysql://localhost/test"; String usuario = "root"; String senha = ""; Try

{ Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection conn = DriverManager.getConnection(url, usuario, senha); return conn; } catch(SQLException ex) { System.err.println("SQLException: " + ex.getMessage()); System.err.println("SQLState: " + ex.getSQLState()); System.err.println("VendorError: " + ex.getErrorCode()); return null; } catch(Exception e) { System.err.println("Problemas ao tentar conectar com o banco de dados"); return null; } } }

Veja que esta classe pertence ao pacote "estudos". Compile, mova-a para o diretrio WEB-INF/classes/estudos e vamos test-la. 2) Escreva a seguinte pgina JSP: <%@ page language="java" import="java.sql.*, estudos.Conexao" %> <html> <head> <title>Aprendendo JSP</title> </head> <body> <% Connection conn = Conexao.conectar();

// testa se a conexo foi efetuada com sucesso if(conn != null) out.println("Conexo efetuada com sucesso!"); %> </body> </html>