[Resolvido] Problemas ao inserir um usuários com JSP

4 respostas
jspjava
G

Olá pessoal, estou criando uma aplicação Java + JSP + MySQL e estou com um problema ao tentar inserir dados no banco.

Minha pagina cadastro.html envia informações para cadastro.jsp que tem o código abaixo:

<%-- 
    Document   : cadastro
    Created on : 14/05/2017, 18:38:52
    Author     : gaf_j
--%>

<%@page contentType="text/html" pageEncoding="UTF-8" language="java" import="Servlets.Usuarios"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Cadastrando</title>
    </head>
    <body>
        <%
            Usuarios usuario = new Usuarios();
            
            usuario.setUSU_FIRSTNAME(request.getParameter("fistname"));
            usuario.setUSU_LASTNAME(request.getParameter("lastname"));
            usuario.setUSU_EMAIL(request.getParameter("email"));
            usuario.setUSU_SENHA(request.getParameter("senha"));
            usuario.setUSU_TELEFONE(request.getParameter("phone"));
            usuario.setUSU_PATROCINADOR(false);
            usuario.setUSU_VALID_EMAIL(false);
            usuario.setUSU_DT_CADASTRO("15/05/2017");
            
            usuario.inserirusuario(request, response, usuario.getUSU_FIRSTNAME(), usuario.getUSU_LASTNAME(), usuario.getUSU_EMAIL(), usuario.getUSU_SENHA(),usuario.getUSU_TELEFONE(), usuario.isUSU_PATROCINADOR(), usuario.isUSU_VALID_EMAIL(), usuario.getUSU_DT_CADASTRO());
            
            String redirectURL = "./index.html";
            response.sendRedirect(redirectURL);
        %>
    </body>
</html>

E ela consulta minha classe java Usuarios.java:

public void inserirusuario(HttpServletRequest request, HttpServletResponse response, String USU_FIRSTNAME, String USU_LASTNAME, String USU_EMAIL, String USU_SENHA, String USU_TELEFONE, boolean USU_PATROCINADOR, boolean USU_VALID_EMAIL, String USU_DT_CADASTRO) throws ClassNotFoundException, SQLException {
        Connection conexao = BancoDeDados.getConnectionMySQL();
        // Executa o SQL de consulta.
        PreparedStatement sql = conexao.prepareStatement("insert into TB_USUARIOS(USU_FIRSTNAME,USU_LASTNAME,USU_EMAIL,USU_SENHA,USU_TELEFONE, USU_PATROCINADOR, USU_VALID_EMAIL, USU_DT_CADASTRO) values('?','?','?','?','?',?,?,?)");
        sql.setString(1, USU_FIRSTNAME);
        sql.setString(2, USU_LASTNAME);
        sql.setString(3, USU_EMAIL);
        sql.setString(4, USU_SENHA);
        sql.setString(5, USU_TELEFONE);
        sql.setBoolean(6, USU_PATROCINADOR);
        sql.setBoolean(7, USU_VALID_EMAIL);
        sql.setString(8, USU_DT_CADASTRO);
        sql.execute();
        conexao.close();
   
}

Minhas configurações de conexão ao banco estão corretas pois criei uma classe para isso e ela esta funcionando perfeitamente.

4 Respostas

Rafa_Lpark

Qual é o problema?

lucas.sampaio

Você está usando request.getParameter(""); dentro de um arquivo .jsp, certo?
Mas de onde vem esses valores que os request.getParameter(""); está pegando?

Você deve criar um formulário e pegar os com o request.getParameter("");.
Exemplo:

...
<%
    Usuarios usuario = new Usuarios();
    usuario.setUSU_FIRSTNAME(request.getParameter("fistname"));
%>
<form>
    <input name="fistname" ...>
</form>
lucas.sampaio

Outra coisa é nesse método inserirUsuario(...). Não precisa passar atributo por atributo, passa o objeto usuário porque ele contem todos os atributos.

Ficaria public void inserirUsuario(Usuario usuario){...}. Aí, ao invés de pegar o parametro passado pega direto de usuario (sql.setString( 1, usuario.getFirstName()); )

G

Valeu pessoal! Consegui resolver, estava colocando aspas simples nas interrogações da query.
Megadeth obrigado, mas essa parte estava certa, estava recebendo esses parâmetros de um form html.

Criado 15 de maio de 2017
Ultima resposta 16 de mai. de 2017
Respostas 4
Participantes 3