Bom pessoal, eu sou iniciante em java, estou desenvolvendo meu TCC, e necessito cadastrar produtos e mostrar ele em uma página de produtos cadastrados basicamente.
Por meio de uma classe DAO e uma servlet além da classe modelo, eu insiro o produto com nome, descrição e imagem, no SGBD MYSQL eu defini o tipo da imagem como BLOB e na DAO e no modelo da classe Produto eu coloquei do tipo InputStream, porém não consigo recuperar uma lista de produtos com o nome, a descrição e a imagem, pesquisei semanas na internet, mas nenhum tutorial me serviu.
Segue o código:
Classe Produto
public class Produto {
private long id;
private String nome;
private String descricao;
private InputStream imagem;
public Produto(long id, String nome, String descricao) {
this.id = id;
this.nome = nome;
this.descricao = descricao;
}
public Produto() {}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public InputStream getImagem() {
return imagem;
}
public void setImagem(InputStream imagem) {
this.imagem = imagem;
}
}
Classe ProdutoDAO
public class ProdutoDAO {
private Connection connection = null;
public ProdutoDAO() {
this.connection = new ConnectionFactory().getConnection();
}
public void insert(Produto produto) {
String sql = "INSERT INTO produto(nome, descricao, imagem) "
+ "VALUES(?, ?, ?)";
try {
PreparedStatement pstm = this.connection.prepareStatement(sql);
pstm.setString(1, produto.getNome());
pstm.setString(2, produto.getDescricao());
if(produto.getImagem() != null) {
pstm.setBlob(3, produto.getImagem());
}
pstm.execute();
pstm.close();
}catch(SQLException e) {
System.out.println("Erro no banco de dados: "+e);
throw new RuntimeException(e);
}
}
public List<Produto> getList() {
List<Produto> produtos = new ArrayList();
try {
PreparedStatement pstm = this.connection.prepareStatement(
"SELECT * FROM produto");
ResultSet rs = pstm.executeQuery();
while(rs.next()) {
Produto produto = new Produto();
produto.setId(rs.getLong("id"));
produto.setNome(rs.getString("nome"));
produto.setDescricao(rs.getString("descricao"));
produto.setImagem(rs.getBlob("imagem").getBinaryStream());
produtos.add(produto);
}
pstm.close();
rs.close();
return produtos;
}catch(SQLException e) {
System.out.println("Erro no banco de dados: "+e);
throw new RuntimeException(e);
}
}
}
Como faço para processar a imagem do tipo InputStream e jogar na página JSP?