Problemas com javabean e jsp

4 respostas
B

Bom galera, meu problema é o seguinte…

Tenho uma pagina cliente.jsp.

<%@ page contentType="text/html"%>   
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">   
  
<html>   
<head>   
<title>Tabela Pessoa</title>   
  
  
<script>   
  
function enviar(par){   
      
   if (par == 'cadastrar'){   
      
      if (document.cadastro.NomeField.value == ''){   
         document.cadastro.statusField.value = 'Preencha o campo nome';   
      }else if (document.cadastro.EnderecoField.value == ''){   
         document.cadastro.statusField.value = 'Preencha o campo Endereço';   
      }else if (document.cadastro.SexoField.value == ''){   
         document.cadastro.statusField.value = 'Preencha o campo Cidade';   
      }else {   
         document.cadastro.action='cadastrar.jsp';   
         document.cadastro.submit();   
      }   
  
   } else if (par == 'consultar'){   
  
      if (document.cadastro.nomeField.value == ''){   
         document.cadastro.statusField.value = 'Preencha o campo nome';   
      }else {   
         document.cadastro.action='consultar.jsp';   
         document.cadastro.submit();   
      }   
  
   }   
   } else if (par == 'listar'){   
      document.cadastro.action='listar.jsp';   
      document.cadastro.submit();   
   }   
}   
</script>   
  
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">   
<style type="text/css">   
<!--   
.style3 {   font-size: 28px;   
   font-weight: bold;   
}   
-->   
</style>   
</head>   
<%   
String strNome = request.getParameter("strNome");   
String strEndereco = request.getParameter("strEndereco");   
String strCidade = request.getParameter("strCidade");   
String status = request.getParameter("status");   
%>   
  
<body>   
<form name="cadastro" method="get">   
  
<table width="472" border="0">   
  <tr>   
    <td width="458" height="70" bgcolor="#6699FF"><p align="center" class="style3">&nbsp;Cadastro Portador </p>   
    </td>   
  </tr>   
  <tr>   
    <td  height="177" bgcolor="#6699FF"><p>&nbsp;
        <strong>Nome :</strong>
	<input name="nomeField" type="text" id="nomeField" size="46" value="<%=(strNome==null)?"":strNome%>"> </p>   
         <p>&nbsp;

        <strong>Endereco :</strong>
	<input name="enderecoField" type="text" id="enderecoField" size="46" value="<%=(strEndereco==null)?"":strEndereco%>"></p>   
         <p>&nbsp;

  	<strong>Cidade:</strong>
        <input name="cidadeField" type="text" id="cidadeField" size="46" value="<%=(strCidade==null)?"":strCidade%>">   
      &nbsp;&nbsp;
         </p>       
   </td>   
  </tr>   
  <tr>   
    <td height="101" bgcolor="#6699FF"><p>&nbsp;   
        <input type="button" onClick="enviar('cadastrar')" name="bt1" value="cadastrar">   
        <input type="button" onClick="enviar('consultar')" name="bt2" value="consultar">   
        <input type="button" onClick="enviar('listar')" name="bt5" value="listar">   
      </p>   
      <p>&nbsp;<strong>Status:   
   <input name="statusField" disabled type="text" id="statusField" size="46" value="<%=(status==null)?"":status%>">   
      </strong></p>   
   </td>   
  </tr>   
</table>   
</form>   
</body>   
</html>

que deveria chamar um cadastrar.jsp.

<%@ page contentType="text/html" language="java" import="java.sql.*"%>   
  
<jsp:useBean id="con" class="conexao.Conexao"/>   
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html>   
<head>   
<title>Cadastrar</title>   
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">   
</head>   
  
<body>   
<form name="form1" method="post" action="cliente.jsp">   
  
<p><strong>Tabela cliente </strong></p>   
<table border=1 cellspacing=0 cellpadding=0 >   
  
   <tr>   
    <td width=200><strong>   
      Nome   
   </strong></td>       
   <td width=50><strong>   
      Endereco   
   </strong></td>       
   <td width=30><strong>   
      Cidade  
   </strong></td>   
   </tr>   
  
  
<%       
   try {   
  
      con.setNome(request.getParameter("nomeField"));   
      con.setEndereco(Integer.parseInt(request.getParameter("enderecoField")));   
      con.setCidade(request.getParameter("cidadeField"));   
      con.inserirDados();   
                  
      con.setConsulta();   
      ResultSet temp = con.getResultado();   
      temp.next();   
         
      if(request.getParameter("nomeField").equals(temp.getString("strNome")))   
         response.sendRedirect("http://localhost:8080/acme/cliente.jsp?status=Registro já existente");   
         
      do{   
      %>   
      <tr>   
          <td width=200>   
               <%out.print(temp.getString("strNome"));%>   
         </td>   
          <td width=50>   
               <%out.print(temp.getString("strEndereco"));%>   
         </td>   
          <td width=30>   
               <%out.print(temp.getString("strCidade"));%>   
         </td>   
      </tr>   
      <%}while (temp.next());   
      
   }catch (Exception e) {   
      e.printStackTrace();   
   }   
      
%>   
</table>   
  <p>&nbsp;</p>   
  <p>   
    <input type="submit" name="Submit" value="voltar">   
</p>     
<p><strong>Status:   
    <input name="statusField" disabled type="text" id="statusField" size="36" value="<%=request.getParameter("nomeField")%> foi cadastrado com sucesso">   
      </strong></p>   
</form>   
</body>   
</html>

e esse cadastro deveria usar o bean Conexao.jar. que fica dentro da pasta lib dentro de WEB-INF.

package conexao;   
  
import java.sql.*;   
  
public class Conexao {   
      
   public Connection con;   
   public Statement stm;   
   public ResultSet res = null;   
   private String strNome, strEndereco, strCidade = null;   
     
   
  
   public Conexao() {   
  
      try {   
  
         Class.forName("org.gjt.mm.mysql.Driver");   
         con =   
            DriverManager.getConnection(   
              "jdbc:mysql://localhost:3306/acme",   
              "root",   
              "root");   
         stm = con.createStatement();    
            
      } catch (Exception e) {   
         System.out.println("não foi possível conectar ao banco" + e.getMessage());   
      }   
   }   
      
   public void setNome(String strNome){   
      this.strNome = strNome;   
   }   
         
   public void setEndereco(int strEndereco){   
      this.strEndereco = strEndereco;   
   }   
  
   public void setCidade(String strCidade){   
      this.strCidade = strCidade;   
   }   
  
   public String getNome(){   
      return strnome;   
   }   
  
   public int getEndereco(){   
      return strEndereco;   
   }   
         
   public String getCidade(){   
      return strCidade;   
   }   
  
   public void inserirDados(){   
      
      try {   
         String query = "insert into cliente(nome,endereco,cidade) values(\""+strNome+"\","+strEndereco+",\""+strCidade+"\")";   
         stm.executeUpdate(query);   
  
      }catch (SQLException e){System.out.println("Erro na inserção:" + e.getMessage());}   
         
   }   
  
  
  
   public void setConsulta() {   
         
      try {   
         res = stm.executeQuery("select * from pessoa");   
      }    
      catch (SQLException e){   
         e.printStackTrace();   
      }   
  
   }   
  
   public ResultSet getResultado() {   
      return res;   
   }   
}

Meus problemas.

*Quando clico em cadastrar não chama a pagina cadastrar.jsp;
*cadastrar.jsp quando executo me retorna dizendo o seguinte…

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

org.apache.jasper.JasperException: /cadastrar.jsp(3,0) The value for the useBean class attribute conexao.Conexao is invalid.
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)


root cause 

org.apache.jasper.JasperException: /cadastrar.jsp(3,0) The value for the useBean class attribute conexao.Conexao is invalid.
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
	org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1174)
	org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
	org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
	org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
	org.apache.jasper.compiler.Generator.generate(Generator.java:3320)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)


note The full stack trace of the root cause is available in the JBoss Web Server/1.0.1.GA logs.


--------------------------------------------------------------------------------

JBoss Web Server/1.0.1.GA

Não sei porque ele não consegue achar o bean e não sei porque a pagina não é chamada…

Muito Obrigado!

4 Respostas

silviofernandes

Olá amigo,

Dei uma olhada rápida em cima do seu código.
De uma olhada na sua função javascript, acho que tem um } a mais, coloquei um comentário no código para vc ver abaixo:

# <script>     
#     
# function enviar(par){     
#         
#    if (par == 'cadastrar'){     
#         
#       if (document.cadastro.NomeField.value == ''){     
#          document.cadastro.statusField.value = 'Preencha o campo nome';     
#       }else if (document.cadastro.EnderecoField.value == ''){     
#          document.cadastro.statusField.value = 'Preencha o campo Endereço';     
#       }else if (document.cadastro.SexoField.value == ''){     
#          document.cadastro.statusField.value = 'Preencha o campo Cidade';     
#       }else {     
#          document.cadastro.action='cadastrar.jsp';     
#          document.cadastro.submit();     
#       }     
#     
#    } else if (par == 'consultar'){     
#     
#       if (document.cadastro.nomeField.value == ''){     
#          document.cadastro.statusField.value = 'Preencha o campo nome';     
#       }else {     
#          document.cadastro.action='consultar.jsp';     
#          document.cadastro.submit();     
#       }     
#     
#    }  //Este é o } que me refiro
#    } else if (par == 'listar'){     
#       document.cadastro.action='listar.jsp';     
#       document.cadastro.submit();     
#    }     
# }     
# </script>

E em relação ao erro que você reportou, você chamou o cadastrar.jsp passando parametros na URL?
Se não, provavelmente o problema encotra-se no código que vou postar abaixo, ele faz resquet, no caso de não haver
ele lança um exception. Para resolver, caso esse seja seu problema, faça uma condição para os request, como mostra o exemplo.

#       //Antes de executar seus request faça uma condição para ver se o mesmo existe
#       if(request.getParameter("nomeField") != null)
#       con.setNome(request.getParameter("nomeField"));     
#       if(request.getParameter("enderecoField") != null)
#       con.setEndereco(Integer.parseInt(request.getParameter("enderecoField")));     
#       if(request.getParameter("cidadeField") != null)
#       con.setCidade(request.getParameter("cidadeField"));

Não sei se pude ajudar, mais tentei. :smiley:
E pessoal, se eu estiver falando besteira, me corrijam por favor.

[]`s

gerdec

bom para chamar a página cadastra.jsp basta colocar o actio no form

<form name="cadastro" method="get">

fazendo a assim

<form action="cadastrar.jsp" name="cadastro" method="get">

um conselho meu e usar JSTL no lugar de <% %> o código fica muito melhor organizado

espero ter ajudado

B

Agradeço pelas respostas, mas tentei fazer e não funcionou, ainda continuo sem conseguir puxar a cadastrar através da cliente, e o cadastrar.jsp continua com o problema.

Muito Obrigado
!

silviofernandes

Olá amigo,

Sei que é errado darmos o peixe na mão, porém hoje acordei disposto para programação e resolvi dar uma ajudinha para você.
Fiz seu código aqui e agora esta rodando certinho.
Algumas dicas para você, javascript é case sensive por isso preste atenção nos nomes dos componentes.
Os nome que estão na tabela devem ser os mesmo para você utilizar no rs.get().
E preste atenção também nas tabela que você faz a consulta.
E também os get set você deve prestar atenção nos seus tipos de dados.

abaixo o código funcionado e com comentários onde achei erros.

cliente.jsp

<%@ page contentType="text/html"%>     
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">     
     
<html>     
<head>     
<title>Tabela Pessoa</title>     
     
     
<script>     
     
function enviar(par){     
         
   if (par == 'cadastrar'){     
         //NomeField é nomeField
      if (document.cadastro.nomeField.value == ''){     
         document.cadastro.statusField.value = 'Preencha o campo nome';     
         //EnderecoField é enderecoField
      }else if (document.cadastro.enderecoField.value == ''){     
         document.cadastro.statusField.value = 'Preencha o campo Endereço';     
         //SexoField não existe, é cidadeField
      }else if (document.cadastro.cidadeField.value == ''){     
         document.cadastro.statusField.value = 'Preencha o campo Cidade';     
      }else {     
         document.cadastro.action='cadastrar.jsp';     
         document.cadastro.submit();     
      }     
     
   } else if (par == 'consultar'){     
     
      if (document.cadastro.nomeField.value == ''){     
         document.cadastro.statusField.value = 'Preencha o campo nome';     
      }else {     
         document.cadastro.action='consultar.jsp';     
         document.cadastro.submit();     
      }  
   //retirar }       
   } else if (par == 'listar'){     
      document.cadastro.action='listar.jsp';     
      document.cadastro.submit();     
   }     
}     
</script>     
     
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">     
<style type="text/css">     
<!--     
.style3 {   font-size: 28px;     
   font-weight: bold;     
}     
-->     
</style>     
</head>     
<%     
String strNome = request.getParameter("strNome");     
String strEndereco = request.getParameter("strEndereco");     
String strCidade = request.getParameter("strCidade");     
String status = request.getParameter("status");     
%>     
     
<body>     
<form name="cadastro" method="get">     
     
<table width="472" border="0">     
  <tr>     
    <td width="458" height="70" bgcolor="#6699FF"><p align="center" class="style3"> Cadastro Portador </p>     
    </td>     
  </tr>     
  <tr>     
    <td  height="177" bgcolor="#6699FF"><p>    
        <strong>Nome :</strong>   
    <input name="nomeField" type="text" id="nomeField" size="46" value="<%=(strNome==null)?"":strNome%>"> </p>     
         <p>    
  
        <strong>Endereco :</strong>   
    <input name="enderecoField" type="text" id="enderecoField" size="46" value="<%=(strEndereco==null)?"":strEndereco%>"></p>     
         <p>    
  
    <strong>Cidade:</strong>   
        <input name="cidadeField" type="text" id="cidadeField" size="46" value="<%=(strCidade==null)?"":strCidade%>">     
           
         </p>         
   </td>     
  </tr>     
  <tr>     
    <td height="101" bgcolor="#6699FF"><p>      
        <input type="button" onClick="enviar('cadastrar')" name="bt1" value="cadastrar">     
        <input type="button" onClick="enviar('consultar')" name="bt2" value="consultar">     
        <input type="button" onClick="enviar('listar')" name="bt5" value="listar">     
      </p>     
      <p> <strong>Status:     
   <input name="statusField" disabled type="text" id="statusField" size="46" value="<%=(status==null)?"":status%>">     
      </strong></p>     
   </td>     
  </tr>     
</table>     
</form>     
</body>     
</html>

cadastrar.jsp

<%@ page contentType="text/html" language="java" import="java.sql.*"%>     
     
<jsp:useBean id="con" class="conexao.Conexao"/>     
     
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">   
<html>     
<head>     
<title>Cadastrar</title>     
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">     
</head>     
     
<body>     
<form name="form1" method="post" action="cliente.jsp">     
     
<p><strong>Tabela cliente </strong></p>     
<table border=1 cellspacing=0 cellpadding=0 >     
     
   <tr>     
    <td width=200><strong>     
      Nome     
   </strong></td>         
   <td width=50><strong>     
      Endereco     
   </strong></td>         
   <td width=30><strong>     
      Cidade     
   </strong></td>     
   </tr>     
     
     
<%         
   try {     
     
      con.setNome(request.getParameter("nomeField"));     
      con.setEndereco(request.getParameter("enderecoField"));     
      con.setCidade(request.getParameter("cidadeField"));     
      con.inserirDados();     
                     
      con.setConsulta();     
      ResultSet temp = con.getResultado();     
      temp.next();     
      //Mudar strNome para nome
      if(request.getParameter("nomeField").equals(temp.getString("nome")))     
         response.sendRedirect("http://localhost:8080/acme/cliente.jsp?status=Registro já existente");     
           
      do{     
      %>     
      <tr>     
          <td width=200>     
          <!-- Mudar strNome para nome -->
               <%out.print(temp.getString("nome"));%>     
         </td>     
          <td width=50>     
          <!-- Mudar strEndereco para endereco -->
               <%out.print(temp.getString("endereco"));%>     
         </td>     
          <td width=30>     
          <!-- Mudar strCidade para cidade -->
               <%out.print(temp.getString("cidade"));%>     
         </td>     
      </tr>     
      <%}while (temp.next());     
         
   }catch (Exception e) {     
      e.printStackTrace();     
   }     
         
%>     
</table>     
  <p> </p>     
  <p>     
    <input type="submit" name="Submit" value="voltar">     
</p>       
<p><strong>Status:     
    <input name="statusField" disabled type="text" id="statusField" size="36" value="<%=request.getParameter("nomeField")%> foi cadastrado com sucesso">     
      </strong></p>     
</form>     
</body>     
</html>

Conexao.java

package conexao;     
     
import java.sql.*;     
     
public class Conexao {     
         
   public Connection con;     
   public Statement stm;     
   public ResultSet res = null;     
   private String strNome, strEndereco, strCidade = null;     
       
     
     
   public Conexao() {     
     
      try {     
     
         Class.forName("org.gjt.mm.mysql.Driver");     
         con =     
            DriverManager.getConnection(
              "jdbc:mysql://localhost:3306/acme",     
              "root",     
              "root");     
         stm = con.createStatement();       
               
      } catch (Exception e) {     
         System.out.println("não foi possível conectar ao banco" + e.getMessage());     
      }     
   }     
         
   public void setNome(String strNome){     
      this.strNome = strNome;     
   }     
   //mudar Parametro para String
   public void setEndereco(String strEndereco){     
      this.strEndereco = strEndereco;     
   }     
     
   public void setCidade(String strCidade){     
      this.strCidade = strCidade;     
   }     
   //mudar variavel strnome para strNome
   public String getNome(){     
      return strNome;     
   }     
   //mudar retorno do metodo para String
   public String getEndereco(){     
      return strEndereco;     
   }     
           
   public String getCidade(){     
      return strCidade;     
   }     
     
   public void inserirDados(){     
         
      try {
    	 //adicionar aspas para endereco
         String query = "insert into cliente(nome,endereco,cidade) values(\""+strNome+"\",\""+strEndereco+"\",\""+strCidade+"\")";
         System.out.println(query);
         stm.executeUpdate(query);     
     
      }catch (SQLException e){System.out.println("Erro na inserção:" + e.getMessage());}     
           
   }     
     
     
     
   public void setConsulta() {     
           
      try {     
    	 //mudar tabela para pesquisar de pessoa para cliente 
         res = stm.executeQuery("select * from cliente");     
      }       
      catch (SQLException e){     
         e.printStackTrace();     
      }     
     
   }     
     
   public ResultSet getResultado() {     
      return res;     
   }     
}

Bom, não se acostume com isso não viu.

[]`s

Criado 24 de janeiro de 2008
Ultima resposta 28 de jan. de 2008
Respostas 4
Participantes 3