Meu chefe me delegou a tarefa verificar a viabilidade de iniciar um projeto com vraptor no netbeans utilizando jdbc e banco postgre.
Realizando um teste com o tutorial da caelum, ao executar o projeto é carregado a página de cadastro do produto, mas ao clicar para inserir ocorre erro 404.
Verifiquei várias vezes o código, que colo abaixo, mas não encontrei o erro.
Sou iniciante em desenvolvimento e este é meu primeiro contato com o framework.
Peço a ajuda na solucao deste pequeno problema, e também opniões sobre a viabilidade de se usar vraptor com jdbc.
form.jsp
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Teste do Vraptor</title>
</head>
<body>
<h2>Cadastro de produto usando Vraptor e JDBC</h2>
<form action="<c:url value="/produtos/adiciona"/>">
Nome: <input type="text" name="produto.nome" /><br/>
Descrição: <input type="text" name="produto.descricao" /><br/>
Preço: <input type="text" name="produto.preco" /><br/>
<input type="submit" value="Salvar" />
</form>
</body>
</html>
Produto
package dominio;
import br.com.caelum.vraptor.Resource;
@Resource
public class Produto {
private int id;
private String nome;
public Produto() {
}
public Produto(int id, String nome) {
this.id = id;
this.nome = nome;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
ProdutosController
package controle;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Validations;
import br.com.caelum.vraptor.view.Results;
import dao.ProdutoDao;
import dominio.Produto;
import java.util.List;
@Resource
public class ProdutosController {
private ProdutoDao dao;
public ProdutosController(ProdutoDao dao) {
this.dao = dao;
}
public void form() {
}
@Post
@Path("/produtos")
public void adiciona(Produto produto) throws Exception {
dao.insProduto(produto);
}
public List<Produto> lista() throws Exception {
return dao.listarProdutos();
}
public void exclui(Produto produto) throws Exception {
ProdutoDao dao = new ProdutoDao();
dao.excluiProduto(produto);
}
public void alterar(Produto produto) throws Exception {
ProdutoDao dao = new ProdutoDao();
dao.alterarProduto(produto);
}
}
produtoDao
package dao;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.ioc.Component;
import java.util.List;
import dominio.Produto;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
@Component
public class ProdutoDao {
Connection con = null;
ResultSet resultSet = null;
PreparedStatement pstmt = null;
public ProdutoDao(Connection con) {
this.con = con;
}
public ProdutoDao() {
}
public void insProduto(Produto produto) throws Exception {
String sql = "";
sql = "insert into produto(nome) values ? ";
pstmt = con.prepareStatement(sql);
pstmt.setString(1, produto.getNome());
pstmt.executeUpdate();
pstmt.close();
}
public void excluiProduto(Produto produto) throws Exception {
String sql = " delete from produto where cod_produto = ? ";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, produto.getId());
pstmt.executeUpdate();
pstmt.close();
}
public void alterarProduto(Produto produto) throws Exception {
String sql = "";
sql = "update produto set nome = ? where cod_produto = ?";
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, produto.getId());
pstmt.setString(2, produto.getNome());
pstmt.executeUpdate();
pstmt.close();
}
public List<Produto> listarProdutos() throws Exception {
String sql ="";
sql = "select * from produto order by nome ";
pstmt = con.prepareStatement(sql);
List<Produto> produtos = null;
resultSet = pstmt.executeQuery();
produtos = new ArrayList<Produto>();
while (resultSet.next()) {
produtos.add(new Produto(resultSet.getInt("codigo"), resultSet.getString("nome")));
}
pstmt.close();
return produtos;
}
}