Estou com uma dúvida, preciso passar uma objeto contrato que criei pra uma JSP é possível ? Sei que devo usar o RequestDispatcher, mas não sei como utiliza-lo neste caso. Alguém poderia me ajudar ?
Estou usando um select atraves da função retornaMaior() para buscar as informações no banco, criando um contrato e setando os atributos.
A função está assim:
public Contrato retornaMaior() {
try {
PreparedStatement stmt = connection.prepareStatement("SELECT id, nomeProdutor, produto, quantidadeKg, dataNegociacao, valor FROM CONTRATOS WHERE ID = (SELECT MAX(ID) FROM CONTRATOS)");
ResultSet rs = stmt.executeQuery();
Contrato contrato = new Contrato();
if(rs.next()) {
contrato.setId(rs.getLong("id"));
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNegociacao"));
contrato.setDataNegociacao(data);
contrato.setNomeProdutor(rs.getString("nomeProdutor"));
contrato.setProduto(rs.getString("produto"));
contrato.setQuantidadeKg(rs.getLong("quantidadeKg"));
contrato.setValor(rs.getDouble("valor"));
}
stmt.close();
rs.close();
return contrato;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
E a servlet que está utilizando ela está assim:
@WebServlet("/geraCodigo")
public class GeraCodigoServlet extends HttpServlet{
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String nomeProdutor = request.getParameter("nomeProdutor");
String produto = request.getParameter("produto");
long quantidadeKg = Long.parseLong(request.getParameter("quantidadeKg"));
String dataEmTexto = request.getParameter("dataNegociacao");
Calendar dataNegociacao = null;
try {
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
dataNegociacao = Calendar.getInstance();
dataNegociacao.setTime(date);
} catch (ParseException e) {
out.println("Erro de Conversão de Data");
return;
}
double valor = Double.parseDouble(request.getParameter("valor"));
Contrato contrato = new Contrato();
contrato.setDataNegociacao(dataNegociacao);
contrato.setNomeProdutor(nomeProdutor);
contrato.setProduto(produto);
contrato.setQuantidadeKg(quantidadeKg);
contrato.setValor(valor);
Connection connection = (Connection) request.getAttribute("conexao");
ContratosDao dao = new ContratosDao(connection);
dao.adiciona(contrato);
out.println("<html> <head> <title> Numero de contrato </title> </head> <body>");
out.println("O número de contrato é: " + dao.retornaMaior().getId() + "para o produtor " + dao.retornaMaior().getNomeProdutor() + "</body> </html>");
}
}
O que eu preciso é substituir esse final da servlet (Tudo enviado pelos dois out.println) usando o RequestDispatcher pra encaminhar para contrato-gerado.jsp. Porém preciso que o contrato vá junto ! Como faço ? Seria melhor se eu enviasse cada atributo como string e gerasse esse contrato na JSP ?
