Para acompanhar este post é necessário conhecer:
- Estrutura de Projetos no NetBeans;
- Adicionar Bibliotecas(JARs);
- HTML básico;
- Linguagem JAVA
- SQL (mais sobre)
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Conexão Simples</title>
</head>
<body>
<h1>Menu</h1>
<a href="incluir.jsp">Incluir</a><br>
<a href="listar.jsp">Listar</a><br>
</body>
</html>
Vamos inserir uma nova pagina jsp [incluir.jsp] onde iremos criar o formulário para inclusão de novos registros.
Obs.: não iremos nos preocupar com a formatação da interface e nem validação das informações neste momento.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Inclusão</title>
</head>
<body>
<h1>Inclusão</h1>
<form action="svCadastro?cmd=incluir" method="post">
<label>Id:</label><input type="number" name="id"><br>
<label>Nome:</label><input type="text" name="nome"><br>
<label>Disciplina:</label><input type="text" name="disciplina"><br>
<label>Nota</label><input type="number" name="nota"><br>
<input type="submit" value="Gravar">
</form>
</body>
</html>
Observe que o action do formulário esta apontando para o servlet [svCadastro], nos remos criá-lo em breve, e esta enviando um parâmetro [cmd] com o valor [incluir].
Para organização do nosso código fonte, vamos criar dois pacotes o primeiro será [br.com.treinamento.bd] e [br.com.treinamento.servlets].
No pacote [br.com.treinamento.bd] iremos criar uma nova classe java [ConexaoBD], que realizará a conexão com o banco de dados.
package br.com.treinamento.bd;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
*
* @author Raulivan
*/
public class ConexaoBD {
//Metodo que irá realizar a conexão de acordo com o banco de dados solicitado
public static Connection Contectar(String banco) throws SQLException, Exception{
if(banco.equalsIgnoreCase("SQL"))
return ConectarSQLServer();
else if(banco.equalsIgnoreCase("MySQL"))
return ConectarMySQL();
else
return null;
}
//Método que realiza a conexão com o SQL Server
private static Connection ConectarSQLServer() throws SQLException, Exception{
String banco = "AGENDA";//"NOME_DO_BANCO";
String usuario = "sa";//"LOGIN_SQL";
String senha = "xxxxxx";//SENHA_SQL";
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String servidor = "RAULIVANPC\\SQLEXPRESS";;
Connection conn;
//definição do driver utilizado
Class.forName(driver);
//inicializa a conexão
conn = DriverManager.getConnection("jdbc:sqlserver://" + servidor + ";databaseName=" + banco, usuario, senha);
return conn;
}
//Método que realiza a conexão com MySql
private static Connection ConectarMySQL() throws SQLException, ClassNotFoundException {
String banco = "AGENDA";//"NOME_DO_BANCO";
String usuario = "root";//"LOGIN_SQL";
String senha = "xxxxxxx";//SENHA_SQL";
String driver = "com.mysql.jdbc.Driver";
String servidor = "localhost";
Connection conn;
//definição do driver utilizado
Class.forName(driver);
//inicializa a conexão
conn = DriverManager.getConnection("jdbc:mysql://" + servidor + ":3306/" + banco, usuario, senha);
return conn;
}
}
Vamos criar o servlet que será responsável por inserir e recuperar as informações do banco de dados, para isso vamos considerar que o banco de dados tenha a seguinte estrutura:
- Nome do banco: Treinamento;
- Tabela: Alunos;
- Id inteiro;
- Nome varchar(80);
- Disciplina varchar(80);
- Nota float
No pacote [br.com.treinamento.servlets] vamos criar um novo servlet [svCadastro]. Altere o método [processRequest], conforme o código abaixo.
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//Pega o valor do parametro cmb para descobrir qual operação será realizada
String comando = request.getParameter("cmd");
if(comando.equalsIgnoreCase("incluir")){
try {
Connection con=null;
Statement stm =null;
try {
//Cira a conexão
con = ConexaoBD.Contectar("MySql");
//Cria o statements que executam as sentenças sql no banco
stm = con.createStatement();
} catch (Exception ex) {
Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);
}
//monta a sentença sql
String query = "insert into alunos(Id,Nome,Disciplina,Nota) values("+
request.getParameter("id") + ",'"+
request.getParameter("nome") +"','"+
request.getParameter("disciplina") +"'," +
request.getParameter("nota") +")";
//Executa a setença sql no bando de dados
stm.executeUpdate(query);
//redirencina para a página index.jsp
response.sendRedirect("index.jsp");
}catch (SQLException e){
//Cria uma pagina para exibir o erro
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Erro</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Erro: " + e.getMessage() + "</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}else if(comando.equalsIgnoreCase("alteracao")){
try {
Connection con=null;
Statement stm =null;
try {
//Cira a conexão
con = ConexaoBD.Contectar("MySql");
//Cria o statements que executam as sentenças sql no banco
stm = con.createStatement();
} catch (Exception ex) {
Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);
}
//monta a sentença sql
String query = "update alunos set "+
"nome= '" + request.getParameter("nome") +
"', disciplina = '" + request.getParameter("disciplina") +
"', nota = " + request.getParameter("nota") +
" where id = "+ request.getParameter("id");
//Executa a setença sql no bando de dados
stm.executeUpdate(query);
//redirencina para a página index.jsp
response.sendRedirect("index.jsp");
}catch (SQLException e){
//Cria uma pagina para exibir o erro
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Erro</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Erro: " + e.getMessage() + "</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}else if(comando.equalsIgnoreCase("exclusao")){
try {
Connection con=null;
Statement stm =null;
try {
//Cira a conexão
con = ConexaoBD.Contectar("MySql");
//Cria o statements que executam as sentenças sql no banco
stm = con.createStatement();
} catch (Exception ex) {
Logger.getLogger(svCadastro.class.getName()).log(Level.SEVERE, null, ex);
}
//monta a sentença sql
String query = "Delete from alunos where id = "+ request.getParameter("id");
//Executa a setença sql no bando de dados
stm.executeUpdate(query);
//redirencina para a página index.jsp
response.sendRedirect("index.jsp");
}catch (SQLException e){
//Cria uma pagina para exibir o erro
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Erro</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Erro: " + e.getMessage() + "</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
}
Agora vamos criar a página [listar.jsp] onde serão listados todos os registro da tabela [alunos]
<%--
Document : listar
Created on : 10/03/2014, 12:55:13
Author : Raulivan
--%>
<!--Observe os imports dos pacotes necessários para execução da rotina -->
<%@page import="br.com.treinamento.bd.ConexaoBD"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.ResultSet"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Lista</title>
</head>
<body>
<h1>Lista de Contatos</h1>
<!-- Abaixo será gerada uma tabela dinamica, o numero de linhas será de acordo com o numero
de registros da tabela alunos-->
<table border="0px" width="800px">
<!-- Parte fixa da tabela -->
<thead>
<tr>
<th bgcolor="#93AAB2" width="80px">Id</th>
<th bgcolor="#93AAB2" width="300px">Nome</th>
<th bgcolor="#93AAB2" width="80px">Disciplina</th>
<th bgcolor="#93AAB2" width="180px">Nota</th>
<th bgcolor="#93AAB2" width="80px"></th>
<th bgcolor="#93AAB2" width="80px"></th>
</tr>
</thead>
<!-- O corpo é gerado dinamicamente -->
<tbody>
<%
ResultSet res =null;
Connection con;
Statement stm;
try {
con = ConexaoBD.Contectar("MySql");
stm = con.createStatement();
res = stm.executeQuery("Select * from alunos");
}catch(Exception ex){
out.write(ex.getMessage());
}
while(res.next()){%>
<tr>
<td><%=res.getInt("Id")%></td>
<td><%=res.getString("Nome")%></td>
<td><%=res.getString("Disciplina")%></td>
<td><%=res.getFloat("Nota")%></td>
<td>
<!-- Link para alteração enviando o id do registro que será alterado
obs.: esta rotina não será implementada neste post-->
<a href="svCadastro?cmb=alterar?id=<%=res.getInt("Id")%>">Alterar</a>
</td>
<td>
<!-- Link para alteração enviando o id do registro que será excluído
obs.: esta rotina não será implementada neste post-->
<a href="svCadastro?cmb=exclusao&id=<%=res.getInt("Id")%>">Excluir</a>
</td>
</tr>
<%}%>
</tbody>
</table>
</body>
</html>
Espero que tenham gostado, dúvidas, reclamações ou sugestões deixe em seu comentário aí em baixo.
Obrigado.