Exibir multiplas imagens em uma JSP

0 respostas
E

Problema:
Tenho um banco de dados que armazena algumas imagens que devem ser mostradas em uma pagina JSP.
Utilizo o código resumido a seguir para efetuar essa operação.

JSP:

“[color=red]input type=‘image’ BORDER=‘0’ WIDTH=160 HEIGHT=210 src=’…/servlet/MostraImagem’” [/color]

Servlet:

public class MostraImagem extends HttpServlet implements Serializable

public void doGet (HttpServletRequest REQU, HttpServletResponse RESP) throws IOException
{

RESP.setContentType(“image/jpeg”);

InputStream INPS = … imagem do banco de dados lida com uma chave já conhecida
OutputStream OUTS = RESP.getOutputStream();

int   TAM1   = 1024;

int   TAM2   = 0;

byte  BUFF[] = new byte[TAM1];
do

{

TAM2 = INPS.read(BUFF);

if ( TAM2 > 0 )

OUTS.write(BUFF, 0, TAM2);

} while (TAM2 > 0);

INPS.close();
OUTS.close();

}

O código acima mostra apenas uma imagem armazenada, porém, tenho que mostrar todas as imagens armazenadas de um determinado usuário.
Para isso fiz a seguinte experiência
.

JSP:

"[color=red]“input type=‘image’ BORDER=‘0’ WIDTH=160 HEIGHT=210 src=’…/servlet/MostraImagem?id=img1’”

“input type=‘image’ BORDER=‘0’ WIDTH=160 HEIGHT=210 src=’…/servlet/MostraImagem?id=img2’” [/color]

Servlet:

public class MostraImagem extends HttpServlet implements Serializable

public void doGet (HttpServletRequest REQU, HttpServletResponse RESP) throws IOException
{

String IDEN = … parametro recebido

RESP.setContentType(“image/jpeg”);

InputStream INPS = … imagem do banco de dados lida com a chave recebida (IDEN)

OutputStream OUTS = RESP.getOutputStream();

int   TAM1   = 1024;

int   TAM2   = 0;

byte  BUFF[] = new byte[TAM1];
do

{

TAM2 = INPS.read(BUFF);

if ( TAM2 > 0 )

OUTS.write(BUFF, 0, TAM2);

} while (TAM2 > 0);

INPS.close();
OUTS.close();

}

[b]Resultado:
[i]A JSP não mostra a primeira imagem, ela mostra um retangulo vazio de imagem. A segunda imagem é mostrada sem problemas.
Isso ocorre porque a servlet já está ativa na memória e descarrega a imagem na área que já está endereçada.

Se eu criar uma servlet para cada imagem o processo funciona perfeitamente.[/i] [/b]

JSP:

[color=red]“input type=‘image’ BORDER=‘0’ WIDTH=160 HEIGHT=210 src=’…/servlet/MostraImagem1’”

“input type=‘image’ BORDER=‘0’ WIDTH=160 HEIGHT=210 src=’…/servlet/MostraImagem2’” [/color]

[b][i]Porém, isso não pode ser assim, como vou fazer para mostrar todas as imagens de um banco de dados, não posso criar uma servlet para cada imagem gravada.

Alguem sabe como fazer isso ?[/i] [/b]

Criado 19 de agosto de 2005
Respostas 0
Participantes 1