Cadastrar dados formulario Jsp no mysql

13 respostas
Trick

Olá amigos, estou precisando de uma ajuda, tenho um formulario jsp e preciso que os dados depois de preenchidos sejam cadastrados no mysql, e logo após uma servlet exiba esses dados. Já criei o formulario e configurei no net beans o conector .jar do mysql. Seria de muito complexidade esse tipo de sistema? sou iniciante e gostaria de uma ajuda se possível. Ja li milhares de tutoriais e at;e agora nada. um forte abraço a todos.

13 Respostas

Raff

qual a sua dúvida ?

eduardoromcy

É fácil sim, usando jsp e servlets você faz rapidinho.

Na jsp vc faz os campos “input’s” e no servlet vc cria a conexão e com request.getParameter captura os dados e depois efetua os “insert’s”, exemplo assim não falta aqui no GUJ.

Boa sorte.

A

Apostila FJ21 Caelum (www.caelum.com.br) – Primeiro capítulo você aprende e tira de letra ^^

T+

celia_fernandes

Oláaa
Eu fiz algo parecido…
No formulário JSP na função, vc chama sua servlet…
Eu criei um BDConector que serve para três banco de dados… vc como só quer no mysql considere apenas o mysql

Qualquer coisa só perguntar! :wink:

package Conexao;
import java.sql.*;

public class BDConector

{

private static BDConector instance = null;

private Connection conn = null;

private String banco;

//Construtor que carrega o campo estático conn com uma conexão ao banco.

private BDConector(String tipo) throws Exception

{

banco = tipo;

/*

* Conexão com o Oracle

*

*/

if (banco.equals(oracle))

{

try

{

Class.forName(oracle.jdbc.OracleDriver);

conn = DriverManager.getConnection(

jdbc:oracle:thin:@127.0.0.1:1521, SYSTEM, 123456

);

}

catch(Exception e)

{

throw new Exception(e.getMessage());

}
}
   else
   if (banco.equals("postgresql"))
   {
   {
   /*
    * Conexão com PostGreSQL
    *  
    */
   try
   {
     Class.forName("org.postgresql.Driver");
     conn = DriverManager.getConnection
     (
        "jdbc:postgresql://localhost:5432/meubanco", "postgres", "postgres"
     );
  }catch(Exception e)
  {
     throw new Exception(e.getMessage());
  }
  }
   }// fim do else
   else
   if (banco.equals("mysql"))
   {
   {
	   /*
	    * Conexão com MySQL
	    *  
	    */
	   try {
		   Class.forName("org.gjt.mm.mysql.Driver");
	         conn = DriverManager.getConnection("jdbc:mysql://localhost/teste", "root","");
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
		} catch (SQLException e) {
		e.printStackTrace();
		}   
	
	  }// fim do else
   }
}

//Método estático que será chamado pelo cliente. Ele só cria uma instância se a

//atual for nula.

public static BDConector getInstance(String tipo) throws Exception

{

if(instance == null)

{

System.out.println(Instância NOVA criada);

instance = new BDConector(tipo);

}

else

System.out.println(Instância  criada);

return instance;

}

public Connection getConnection()

{

return conn;

}

public static void closeConnection(Statement stmt, ResultSet rs)

throws Exception

{

close(stmt, rs);

}

public static void closeConnection(Statement stmt)

throws Exception

{

close(stmt, null);

}

public static void close(Statement stmt, ResultSet rs)

throws Exception

{

try

{

if(rs != null)rs.close();

if(stmt != null)stmt.close();

}

catch (Exception e)

{

throw new Exception(e.getMessage());

}

}

}
edmarr

Boa dica Celia , mas nao se esqueça de usar a tag Code , qualquer duvida so olhar o link

http://www.guj.com.br/posts/list/50115.java

celia_fernandes

afff, eu não sabia heheehe, foi mal… :oops:

Trick
eduardoromcy:
É fácil sim, usando jsp e servlets você faz rapidinho.

Na jsp vc faz os campos "input's" e no servlet vc cria a conexão e com request.getParameter captura os dados e depois efetua os "insert's", exemplo assim não falta aqui no GUJ.

Boa sorte.

Segue o codigo feito

<body>
        <h2>Formulário</h2>
        <form action="recebe.jsp" method="POST">

            <table>
                <tr>
                    <td> Matrícula </td>
                    <td><input type="text" size="20" name="matricula"></td> </td>
                </tr>
                <tr>
                    <td>Nome</td>
                    <td><input type="text" size="30" name="nome"></td>
                </tr>
                <tr>
                    <td> Email </td>
                    <td><input type="text" size="30" name="email"></td> </td>
                </tr>
                <tr>
                    <td>Telefone</td>
                    <td><input type="text" size="15" name="telefone"></td>
                </tr>
               
                <tr>
                    <td> <input type="reset" value="Limpar dados"> </td>
                    <td><input type="submit" value="Enviar dados"></td>
                    </tr>
                
                      </table>

Ao clicar no botão enviar dados o programa deve inserir esses dados cadastrados no mysql e depois exibir em uma servlet o que foi digitado no formulario, estou um pouco perdido com alguns termos, sou bem leigo no assunto. desde já obrigado.

Trick
celia fernandes:
Oláaa Eu fiz algo parecido... No formulário JSP na função, vc chama sua servlet... Eu criei um BDConector que serve para três banco de dados... vc como só quer no mysql considere apenas o mysql

Qualquer coisa só perguntar! :wink:

Entendi, então a conexão com o mysql ficaria desta forma?

package Conexao;
import java.sql.*;

public class BDConector
{
   private static BDConector instance = null;
   private Connection conn = null;
   private String banco;
   //Construtor que carrega o campo estático conn com uma conexão ao banco.
   private BDConector(String tipo) throws Exception
   {
	   banco = tipo;
	   
		   try {
			   Class.forName("org.gjt.mm.mysql.Driver");
		         conn = DriverManager.getConnection("jdbc:mysql://localhost/teste", "root","");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			} catch (SQLException e) {
			e.printStackTrace();
			}   
		
		  }// fim do else
       }   
   }
   //Método estático que será chamado pelo cliente. Ele só cria uma instância se a 
   //atual for nula. 
   public static BDConector getInstance(String tipo) throws Exception
   {
      if(instance == null)
      {
    	  System.out.println("Instância NOVA criada");
         instance = new BDConector(tipo);
      }
      else
    	  System.out.println("Instância JÁ criada");
      return instance;
   }
   public Connection getConnection()
   {
      return conn;
   }
   public static void closeConnection(Statement stmt, ResultSet rs) 
   throws Exception
   {
      close(stmt, rs);
   }
   public static void closeConnection(Statement stmt) 
   throws Exception
   {
      close(stmt, null);
   }
   public static void close(Statement stmt, ResultSet rs)
   throws Exception
   {
      try
      {
         if(rs != null)rs.close();
         if(stmt != null)stmt.close();
      }
      catch (Exception e)
      {
         throw new Exception(e.getMessage());
      }
   }
}

Seria isso?

Mas eu criaria esse codigo dentro de qual pagina? na servlet? desculpe minha ignorancia. desde já obrigado.

Trick

andre.froes:
Apostila FJ21 Caelum (www.caelum.com.br) – Primeiro capítulo você aprende e tira de letra ^^

T+

Obrigado pela dica, já estava lendo essa apostila, mas sou leigo no assunto. ainda estou meio perdido. mesmo assim obrigado pela força.

Trick

Amigos, já fiz o formulario jsp apontando para o servlet com a conexão, mas depois que preencho o formulario e clico em submit da erro segue abaixo o codigo do servlet.

Obs: Criei package Conecta e a servlet New

package Conecta;  
   import java.sql.*;  
     
   public class New  
   {  
      private static New instance = null;  
     private Connection conn = null;  
      private String banco;  
      //Construtor que carrega o campo estático conn com uma conexão ao banco.  
      private New(String tipo) throws Exception  
      {  
          banco = tipo;  
            
              try {  
                  Class.forName("org.gjt.mm.mysql.Driver");  
                   conn = DriverManager.getConnection("jdbc:mysql://localhost/teste", "root","root");  
           } catch (ClassNotFoundException e) {  
              e.printStackTrace();  
               } catch (SQLException e) {  
               e.printStackTrace();  
               }     
             
             }// fim do else  
          }     
      }  
      //Método estático que será chamado pelo cliente. Ele só cria uma instância se a   
      //atual for nula.   
      public static New getInstance(String tipo) throws Exception  
      {  
         if(instance == null)  
         {  
             System.out.println("Instância NOVA criada");  
            instance = new New(tipo);  
         }  
         else  
             System.out.println("Instância JÁ criada");  
         return instance;  
      }  
      public Connection getConnection()  
      {  
         return conn;  
      }  
      public static void closeConnection(Statement stmt, ResultSet rs)   
      throws Exception  
      {  
         close(stmt, rs);  
      }  
      public static void closeConnection(Statement stmt)   
      throws Exception  
      {  
         close(stmt, null);  
      }  
      public static void close(Statement stmt, ResultSet rs)  
      throws Exception  
      {  
         try  
         {  
            if(rs != null)rs.close();  
            if(stmt != null)stmt.close();  
         }  
         catch (Exception e)  
         {  
            throw new Exception(e.getMessage());  
         }  
      }  
   }

Aonde posso estar errando? desde já agradeço

edmarr

Qual erro ocorre ?

Trick

Da erro quando executa, mas n especifica, estou tentando outro codigo esse…

package Conectar;


import java.sql.*;

 public class New {

 public static Connection getConnection()throws SQLException
    {
        try
        {

         Class.forName("com.mysql.jdbc.Driver");
            System.out.println("Conectando ao banco");

            return DriverManager.getConnection("com.mysql.jdbc.Driver:mysql://localhost/MySql","root","root");


        }

        catch(ClassNotFoundException erro)
        {
            throw new SQLException(erro.getMessage(), erro);
      }
 }
 }

Aparece isso depois que clica em submit

HTTP Status 404 - /projeto01/conecta.java

type Status report

message /projeto01/conecta.java

description The requested resource (/projeto01/conecta.java) is not available.
Apache Tomcat/6.0.18

celia_fernandes

Boa noite!!
Bom esse BDConector é junto com as servlets, mas eu criei uma pasta chamado ‘Conexao’ para não misturar com as servlets, a forma como postou ali está correto…aí na sua servlet correspondente ao seu formulário você faz como o exemplo abaixo eu coloquei Oracle, pq utilizo mais esse…
Qualquer coisa estou aqui :slight_smile:

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

[color=red]import Conexao.BDConector;[/color]

/*import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;
import net.sf.jasperreports.engine.util.JRLoader;
*/
/**
 * Servlet implementation class ServletDepartamento
 */
public class ServletDepartamento extends HttpServlet 
{
	
	private static final long serialVersionUID = 1L;
	private BDConector con = null;
       
    public ServletDepartamento() 
    {
        super();
        // TODO Auto-generated constructor stub
    }

    protected void processRequest (HttpServletRequest request, HttpServletResponse response)
    throws Exception
    {
		String action = request.getParameter("escondido");

     	/*
     	 * O Objeto con, pega uma instância da classe
     	 * BDConector, que é Multi-banco-de-dados,
     	 * podendo ser: oracle, postgresql ou mysql
		 * Através deste objeto con, pode-se efetuar
		 * a chamada ao método:
		 * getConnection()
		 *
		 */
		con = BDConector.getInstance("oracle");

		try 
		{
			if (action.equalsIgnoreCase("cadastrar")) 
			{
				PrintWriter out = response.getWriter();
				out.println("<HTML><BODY><h2>");
				out.println("CADASTRAR: <BR><span style=\"color: #FF0000\">");
				out.println("Cadastro com Sucesso!");
				out.println("</span></h2><BODY><HTML>");
				
				if(request.getParameter("textfield2").equals(""))
				{
					out.println("Informe o departamento!");
					
				}
				   try
				   {
				      int coddpto=Integer.parseInt(request.getParameter("textfield1"));
					  String dpto= request.getParameter("textfield2");
					  Statement curStmt = con.getConnection().createStatement();

				          ResultSet busca = curStmt.executeQuery("select codigo_departamento from departamento where codigo_departamento = "+coddpto);
				          if(busca.next()==true)
				          {
				             out.println("<br><br><p><h2 align = CENTER>Manutenção de Departamentos</h2></p>");
				             out.println("<br><br><p><h3 align = CENTER>Departamento já cadastrado.</h3></p>");
				          }
				          else
				          {    

				           boolean res = curStmt.execute("INSERT INTO departamento Values ("+coddpto+",'"+dpto + "')");
				           curStmt.close();
				           // A conexão fica aberta
                           //con.close(); // Fecha a conexão com o Banco de Dados


				           out.println("<p align='center'><font size='3' face='Verdana'><strong>Cadastro");
				           out.println("de Departamentos</strong></font></p><hr>");
				           out.println("<p align='center'><textarea name='S1' rows='6' cols='32'>"+coddpto+","+dpto+",");
				           out.println("recebemos suas informações em nosso Banco de Dados.");
				           out.println("");
				           out.println("Atenciosamente,");
				           out.println("");
				           out.println("Controle de Departamentos.</textarea></p>");
				          }//else
				   }
				   catch(SQLException ex)
				   {
				      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
				      out.println(ex);
				   }
				   catch(java.lang.Exception ex)
				   {
				      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
				      out.println(ex);
				   }

			} 
			else if (action.equalsIgnoreCase("listar")) 
			{
				//actionListarCidadesDesc(request, response);
				PrintWriter out = response.getWriter();
				out.println("<HTML><BODY><h2>");
				out.println("LISTAR: <BR><span style=\"color: #FF0000\">");
				out.println("Listado com Sucesso!");
				out.println("</span></h2><BODY><HTML>");
				
				   try
				   {
				          String cor="#FFFFFF";
					      Statement curStmt = con.getConnection().createStatement();
				          ResultSet res = curStmt.executeQuery("select * from departamento order by departamento_dep");

				          out.println("<h1>Lista de Departamentos Cadastrados</h1><br>");
				          out.println("<table border='0' cellpadding='0' cellspacing='0' bgcolor='#808080' width='500'>");
				          out.println("<tr>");
				          out.println("<td><font color='#FFFFFF' face='Verdana'><strong>Código do Departamento</strong></font></td>");
				          out.println("<td><font color='#FFFFFF' face='Verdana'><strong>Departamento</strong></font></td>");
				          out.println("</tr>");
				          while (res.next()==true)
						  {
				             out.println("<tr>");
				             out.println("<td bgcolor='"+cor+"'><font face='Verdana'>"+res.getInt("codigo_departamento")+"</td>");
				             out.println("<td bgcolor='"+cor+"'><font face='Verdana'>"+res.getString("departamento_dep")+"</td>");
				             out.println("</tr>");

					     if(cor.equals("#FFFFFF")) 
						  cor="#C0C0C0"; 
				          else    
				               if(cor.equals("#C0C0C0")) 
							      cor="#FFFFFF"; 
				          }
				          curStmt.close();
				          out.println("</table><br><br>");
				   }
				   catch(SQLException ex)
				   {
				      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
				      out.println(ex);
				   }
				   catch(java.lang.Exception ex)
				   {
				      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
				      out.println(ex);
				   }
			}   
					else
						if (action.equalsIgnoreCase("alterar")) 
						{
							PrintWriter out = response.getWriter();
							out.println("<HTML><BODY><h2>");
							out.println("ALTERAR: <BR><span style=\"color: #FF0000\">");
							out.println("Alterado com Sucesso!");
							out.println("</span></h2><BODY><HTML>");
							
							   try
							   {
								 int coddpto=Integer.parseInt(request.getParameter("textfield1"));
								 String dpto= request.getParameter("textfield2");
								
								 Statement curStmt = con.getConnection().createStatement();

								 	  ResultSet busca = curStmt.executeQuery("select codigo_departamento from departamento where codigo_departamento = "+coddpto);
								 	  if(!busca.next()==true) // caso não encontre o grupo
								 	  {
							             out.println("<br><br><p><h2 align = CENTER>Manutenção de Departamentos</h2></p>");
							             out.println("<br><br><p><h3 align = CENTER>Não é possível fazer a alteração pois o código não está cadastrado!</h3></p>");
							          }
							          else
							          {    
		 				        	   out.print("UPDATE departamento set codigo_departamento="+coddpto+",departamento_dep='"+dpto+"' WHERE CODIGO_DEPARTAMENTO = '" + coddpto+"'");
							           boolean res = curStmt.execute("UPDATE departamento set codigo_departamento="+coddpto+",departamento_dep='"+dpto+"' WHERE codigo_departamento = '" + coddpto+"'");
							           curStmt.close();

							           out.println("<p align='center'><font size='3' face='Verdana'><strong>Cadastro");
							           out.println("de Departamentos</strong></font></p><hr>");
							           out.println("<p align='center'><textarea name='S1' rows='6' cols='32'>"+dpto+",");
							           out.println("ALTERAMOS suas informações em nosso Banco de Dados.");
							           out.println("");
							           out.println("Atenciosamente,");
							           out.println("");
							           out.println("Controle de Departamentos.</textarea></p>");
							          }//else
							   }
							   catch(SQLException ex)
							   {
							      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
							      out.println(ex);
							   }
							   catch(java.lang.Exception ex)
							   {
							      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
							      out.println(ex);
							   }
							
						}
						else
							if (action.equalsIgnoreCase("excluir")) {
								//actionListarCidades(request, response);
								PrintWriter out = response.getWriter();
								out.println("<HTML><BODY><h2>");
								out.println("EXCLUIR: <BR><span style=\"color: #FF0000\">");
								out.println("Excluído com Sucesso!");
								out.println("</span></h2><BODY><HTML>");
								
								   try
								   {
										  int coddpto=Integer.parseInt(request.getParameter("textfield1"));
										  String dpto= request.getParameter("textfield2");
										
										  Statement curStmt = con.getConnection().createStatement();

										  ResultSet busca = curStmt.executeQuery("select codigo_departamento from departamento where codigo_departamento = "+coddpto);
										  if(!busca.next()==true) // caso não encontre o grupo
										  {
								             out.println("<br><br><p><h2 align = CENTER>Manutenção de Departamentos</h2></p>");
								             out.println("<br><br><p><h3 align = CENTER>Não é possível excluir pois o código não está cadastrado.</h3></p>");
								          }
								          else
								          {   
								           boolean res = curStmt.execute("DELETE FROM departamento where codigo_departamento = "+coddpto);
								           curStmt.close();

								           out.println("<p align='center'><font size='3' face='Verdana'><strong>Cadastro");
								           out.println("de Departamentos</strong></font></p><hr>");
								           out.println("<p align='center'><textarea name='S1' rows='6' cols='32'>"+dpto+",");
								           out.println("a EXCLUSÃO foi efetuada com sucesso.");
								           out.println("");
								           out.println("Atenciosamente,");
								           out.println("");
								           out.println("Direção de Desenvolvimento.</textarea></p>");
								          }//else
								   }
								   catch(SQLException ex)
								   {
								      out.println("<p><h3 align = CENTER>Problemas com o banco de Dados!</h3></p>");
								      out.println(ex);
								   }
								   catch(java.lang.Exception ex)
								   {
								      out.println("<p><h3 align = CENTER>Erro de Comunicacao!</h3></p>");
								      out.println(ex);
								   }
								
							/*}
							else
								if (action.equalsIgnoreCase("Relatorio"))
								{
									
									//ServletContext context = getServletContext();

									byte[] bytes = null;

									try {
										//JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject(context.getRealPath("/relatorio/Relatorio_Grupo.jasper"));
										JasperReport relatorioJasper = (JasperReport) JRLoader.loadObject("C:\Documents and Settings\Celia\Desktop\MONOGRAFIA\ProjetoServletTFG\WebContent\Relatorios\Relatorio_Departamento.jasper");
										

										Map<String, Object> params = new HashMap<String, Object>();
										//params.put("DATA", dataServidor);
										//params.put("MES_ANO_INI", dataInicial);
										//params.put("MES_ANO_FIM", dataFinal);
										//params.put("OBSERVACOES", "NÃO CONSTA AS DESPESAS GERADAS COM MATERIAIS DE ORTESE E PROTESE");

										//bytes = JasperRunManager.runReportToPdf(relatorioJasper, params, ds);
										bytes = JasperRunManager.runReportToPdf(relatorioJasper, params, con.getConnection());
									} 
									catch (JRException e) 
									{
										e.printStackTrace();
									}

									if (bytes != null && bytes.length > 0) 
									{
										response.setContentType("application/pdf");
										response.setContentLength(bytes.length);

										ServletOutputStream ouputStream = response.getOutputStream();
										ouputStream.write(bytes, 0, bytes.length);
										ouputStream.flush();
										ouputStream.close();

										//gerou = true;
									}
								*/	
								}
				} 
		          catch (Exception e) 
		        {
		            PrintWriter out = response.getWriter();
					out.println("<HTML><BODY><h2>");
					out.println("ERRO: <BR><span style=\"color: #FF0000\">");
					out.println(e.getMessage());
					out.println("</span></h2><BODY><HTML>");
					e.printStackTrace();
					
					
				}
		          finally 
		        {
					//PrintWriter out = response.getWriter();
				    //out.close();
				}
		    	
		    }
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try 
		{
			this.processRequest(request, response);
		} catch (Exception e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		try 
		{
			this.processRequest(request, response);
		} 
		catch (Exception e) 
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
Criado 28 de setembro de 2009
Ultima resposta 29 de set. de 2009
Respostas 13
Participantes 6