Servlet não funciona

6 respostas
nandobgi

Boa tarde amigos

Segui a dica de alguns amigos aqui do guj de fazer uma app pequena para web sem o uso de framework, mas não estou conseguindo gravar os dados no banco, o servlet responsável não chega nem a dar erro
Segue abaixo meu código:

Servlet
public class ControllerPessoa extends HttpServlet {
	
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
	  IOException, ServletException {
		
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
			
		
		Pessoa pessoa = new Pessoa();
		pessoa.setCodigo(Integer.parseInt(request.getParameter("codigo")));
		out.println(request.getParameter("nome"));
		pessoa.setNome(request.getParameter("nome"));
		pessoa.setSobrenome(request.getParameter("sobrenome"));
		pessoa.setEndereço(request.getParameter("endereco"));
		pessoa.setBairro(request.getParameter("bairro"));
		pessoa.setCidade(request.getParameter("cidade"));
		pessoa.setEstado(request.getParameter("estado"));
		pessoa.setTelefoneResidencial(request.getParameter("telefoneResidencial"));
		pessoa.setTelefoneCelular(request.getParameter("telefoneCelular"));
		pessoa.setEmail(request.getParameter("email"));
		
		DAOPessoa daoPessoa = new DAOPessoa();
		daoPessoa.cadastrar(pessoa);
		
	    pessoa = null;
	    
	    out.println("OK");
	}
DAO
public class DAOPessoa {
	
	Connection con = null;
	PreparedStatement prepared;
	
	public DAOPessoa() {
		try {
			con = FactoryConnection.getInstance().getConnection();
		} catch( Exception e ) {
			e.printStackTrace();
		}
	} // fim do construtor
	
	public void cadastrar(Pessoa pessoa) {
		
		try {
			prepared = con.prepareStatement("INSERT INTO PESSOA VALUES(?,?,?,?,?,?,?,?,?,?)");
			prepared.setInt(1, pessoa.getCodigo());
			prepared.setString(2,pessoa.getNome());
			prepared.setString(3,pessoa.getSobrenome());
			prepared.setString(4,pessoa.getEndereço());
			prepared.setString(5,pessoa.getBairro());
			prepared.setString(6,pessoa.getCidade());
			prepared.setString(7,pessoa.getEstado());
			prepared.setString(8,pessoa.getTelefoneResidencial());
			prepared.setString(9,pessoa.getTelefoneCelular());
			prepared.setString(10,pessoa.getEmail());
		} catch(Exception e) {
			e.printStackTrace();
		} finally {
			closeBD();
		}
	} // fim do método cadastrar
	
	
       private void closeBD() {
		
		try {
			prepared.close();
			con.close();
		} catch(Exception e) {
			e.printStackTrace();
		}
	} // fim do método closeBD
	

}

Já revirei o código mas não estou conseguindo achar o erro

Obrigado
[ ]'s

6 Respostas

T

Seu banco exige que a inserção de dados esteja dentro de uma transação (BEGIN/COMMIT) ou o driver, por padrão, já dá “auto-commit”?

Veja se não é um parâmetro esquisito que tem de ser passado para a string de conexão. (Como não sei que banco você está usando, e como a conexão foi aberta, fica difícil de dizer qualquer coisa só olhando essas linhas de código.)

luis.soares

Meu caro, você não está chamando o método Execute() do statement !
Faça :

prepared.Execute();

Abraço.

nandobgi

Obrigado luis era isso mesmo, luis estou usando um servlet para cada ação do usuário como gravar, excluir, lista, etc, tem alguma forma mais inteligente de fazer isso sem framework?

Obrigado

luis.soares

Tem sim. Você pode passar parametros para o seu Servlet.
Exemplo na chamada do Servlet, passando parametros:

http://localhost:8080/servlet?action=cadastrar
http://localhost:8080/servlet?action=excluir

E ai, no seu doGet ou doPost, você captura o parametro “action” (no caso do exemplo aqui - o parametro pode ter qualquer nome) e verifica qual o método a ser chamado :

String action = request.getParameter("action")

if (action.equals("cadastrar")) {
  cadastrar()
}
else if (action.equals("excluir")) {
  excluir
}

Abraço.

otaviofcs

É, só não esquece de limpar a url depois para o cara não dar um refresh e incluir novamente um registro ou gravar sem querer uma alteração que não quis, …

nandobgi

Obrigado pela ajuda pessoal

[ ]'s

Criado 12 de janeiro de 2007
Ultima resposta 12 de jan. de 2007
Respostas 6
Participantes 4