getAttribute nulo na Scriptlet

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());%>">

Se seu Servlet seta o atributo na requisição, então o JSP deve obter o atributo da requisição também.