criação de CRUD

3 respostas
A

pessoal, estou inicinando em desenvolvimento web, e pra começar iniciei com um crud simples baseado em servlet.

tenho meu javaBean, DAO, connecção, e minhas servlet.
para salvar ele salva muito bem no banco.
o problema esta no momento em que eu quero alterar o conteudo.
para isso criei um index.jsp que chama a servlet de alteração com os campos de edição.
no momento de alterar a action chama a servlet que faz esta alteração.
na teoria eh interessante, porem na pratica nao funciona.
alguem poderia me ajudar???

index.jsp
<table>
		<%
			ContatoDAO dao = new ContatoDAO();
			List<Contato> contatos = dao.getList();
	
			for (Contato contato : contatos) {
		%>
		<tr>
			<td><%=contato.getId() %></td>
			<td><%=contato.getNome()%></td>
			<td><%=contato.getCpf()%></td>
			<td><a href="AlterarExibirContatoServlet?codigo=<%=contato.getId() %>">alterar</a></td>
			<td><a href="deleta-contato.jsp?codigo=<%=contato.getId() %>">deletar</a></td>
		</tr>
		<%
			}
		%>
	</table>

Classe DAO método

public void altera(Contato contato) {
		String sql = "update contato set nome=?, cpf=? where id=?";	

		try {
			PreparedStatement stmt = conn.prepareStatement(sql);
			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getCpf());
			stmt.setLong(3, contato.getId());			

			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}	}

a servlet com os campos para alterar o conteudo

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter pw = response.getWriter();					
		pw.print("<body>");
		pw.print("<form action=\"aleraContato\" method=\"get\">");
		pw.print("Nome: <input type=\"text\" name=\"nome\" /><br />");
		pw.print("Cpf: <input type=\"text\" name=\"cpf\" /><br />");
		pw.print("<a href=\"index.jsp\"	title=\"Volta para a página inicial\">voltar</a> ");
		pw.print("<input type=\"submit\" value=\"Alterar\" />");
		pw.print("</form>");
	pw.print("</body>");
	}

//servlet que chama a conecção passando as alterações feitas

Long id = Long.parseLong(request.getParameter("id"));
		String nome = request.getParameter("nome");
		String cpf = request.getParameter("cpf");
		Contato contato2 = new Contato();
		contato2.setId(id);
		contato2.setNome(nome);
		contato2.setCpf(cpf);	

		ContatoDAO dao;
		try {
			dao = new ContatoDAO();
			dao.altera(contato2);		
		} catch (SQLException e) {	
			throw new RuntimeException();
		}
		out.println("<body>");
		out.println("Contato " + contato2.getNome() + " alterado com sucesso");
		out.println("<pre><a href=\"index.jsp;\">Voltar</a></pre>");
		out.println("</body>");
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
	this.service(request, response);
	}

3 Respostas

S

Na linha 12 e 13 do index.jsp

<td><a href="AlterarExibirContatoServlet?codigo=<%=contato.getId() %>">alterar</a></td>  
<td><a href="deleta-contato.jsp?codigo=<%=contato.getId() %>">deletar</a></td>
não seria assim
<td><a href="AlterarExibirContatoServlet?codigo=${contato.getId()}">alterar</a></td>  
<td><a href="deleta-contato.jsp?codigo=${contato.getId()}">deletar</a></td>
F

Alex, qual é o erro que está dando?
Verifique se o contato que chega no DAO contém um valor para id.

A

pessoal, vlw pela ajuda…
eu consegui resolver o problema com a ajuda de um amigo
vou postar a solução para talvez ajudar alguem em digiculdade

classe DAO
criei um metodo para que retorne um contato e tdas as suas informações:

public Contato getContato(Integer codigo){ PrepareStatement stmt = this.conn.prepareStatement("select * from contato where id=?"); stmt.setInt(1, codigo); ResultSet rs = stmt.executeQuery(); Contato contato = new Contato(); while(rs.next()){ contato.setId(rs.getLong("id")); contato.setNome(rs.getString("nome")); } rs.close(); stmt.close(); return contato;}

a Servlet com os campos para alteração do contato

Contato contato = null;
ContatoDAO dao;
sysout(Integer.parseInt(request.getParameter("codigo")));
dao = new ContatoDAO;
contato = dao.getContato(Integer.parseInt(request.getParameter("codigo")));

espero q esse codigo possa ajudar outras pessoas

Criado 1 de junho de 2010
Ultima resposta 7 de jun. de 2010
Respostas 3
Participantes 3