Eu tenho um processo em que eu pego uma imagem pelo HTML e gravo-a no banco de dados… até aí Ok, mas a continuação do processo requer que eu exiba a mesma imagem na mesma JSP.
Três perguntas : Qual a diferença entre usar [HttpSession].getAttribute(...)
e request.getAttribute(...)
?
Como fazer isso de mostar a imagem na mesma JSP “em tempo real”? Ou seja, como fazer a JSP atualizar com a imagem carregada? (seria um RequestDispatcher
?..)
E… nos meus testes, eu criei uma JSP de teste só para aprender a carregar a imagem via um Scriptlet na tag <img>
.
Na Servlet, uso uso request.setAttribute(...)
+ RequestDispatcher
para mandar os dados da imagem para a JSP.
No Scriptlet, eu uso [HttpSession].getAttribute(...)
para recuperar os dados referentes à imagem e assim poder exibí-la na na tag. Mas o método retorna nulo ! O que pode ser?
Trecho da Servlet :
{
sessao.setAttribute("path", pathImg);
File imgRecebida = new File(sessao.getAttribute("path").toString());
BufferedImage img = ImageIO.read(imgRecebida);
sessao.setAttribute("width", img.getWidth());
sessao.setAttribute("height", img.getHeight());
request.getRequestDispatcher("mandateste.jsp").forward(request, response);
//byte[] byteArray = Utilitarios.converterImgParaBytes(imgRecebida,
// imgRecebida.getPath().substring(imgRecebida.getPath().lastIndexOf(".")));
return;
}
Trecho da JSP de teste :
<% HttpSession sessao = request.getSession();%>
<img alt="ImgTeste" src="<%sessao.getAttribute("path").toString();%>"
width="<%Integer.parseInt(sessao.getAttribute("width").toString());%>>"
height="<%Integer.parseInt(sessao.getAttribute("height").toString());%>">