JSP e imagem

5 respostas
P

Como eu recupero do banco de dados e visualizo nonavegador uma imagem .gif cadastrada no Banco de dados?
Alguem pode me dar uma ajuda?

Beijinhos…

5 Respostas

S

[color=“blue”]Oi pessoal !!! Olha Pat isso depende, se você cadastrou o local onde esta a imagem é bem simples, basta fazer uma consulta ao banco de dados e jogar o resultado numa variável String pra você poder acessar… agora se você inseriu a imagem no banco de dados aí depende de qual você esta usando. :!:

Você podia colocar mais detalhes sobre a estrutura da sua aplicação, tipo: banco de dados e como você esta acessando o mesmo. Assim fica mais facil de ajudar. :roll:

Valeu pessoal !!!
SkyBlue[/color]

Camilo_Sales

Estou desenvolvendo uma aplicação que grava e recupera imagens do banco Oracle. Para exibir a imagem você precisa de um servlet, action (struts) ou jsp que:

  • abra uma conexão com o banco
  • faça um select na imagem
  • peque um stream da imagem
  • sete o content do response como image/jpeg
  • e retorne os bytes do stream
    Na pagina jsp que vai exibir a imagem o segredo é chamar o servlet, action ou pagina jsp que retorna o conteúdo da imagem no campo src da tag html img: <img src=‘seuservlet?FotoId=id’>, passando o id da foto que será buscada no banco como parâmetro.
    Segue um exemplo:
/** getphoto.jsp codigo fonte <em>/

<%<a class="mention" href="/u/page">@page</a> import="java.sql.</em>,oracle.jdbc.*"%>

<html>

<head>

<title>jsp1</title>

</head>

<body bgcolor="#ffffff">

<table width=“781” border=“2”>

<tr>

<td width=“83” bgcolor="#C0C0C0">

<b>PhotoId</b>

</td>

<td width=“450” bgcolor="#C0C0C0">

<b>Description</b>

</td>

<td width=“228” bgcolor="#C0C0C0">

<b>Photo Image</b>

</td>

</tr>

<%

Connection conn = null;

Statement stmt = null;

ResultSet rset = null;

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

conn = DriverManager.getConnection(jdbc:oracle:thin:@itas:1521:oraITAS,yourDbUserId,yourDbPassword);

stmt = conn.createStatement();

rset = stmt.executeQuery(select photo_id,photo_description from photo);

while (rset.next()) {

%>

<tr>

<td width=“83”>

<%=rset.getObject(photo_id)%>

</td>

<td width=“450”>

<%=rset.getObject(photo_description)%>

</td>

<td width=“228”>

<img src=“getimage.jsp?PhotoId=<%=rset.getObject(photo_id)%> width=“238” height=“228”>

</td>

</tr>

<%

}

conn.close();

%>

</table>

</body>

</html>

/** getimage.jsp codigo fonte*/

<%@ page contentType=image/jpeg; chaoResult=iso-8859-1

language=java import=java.sql.<em>,<a href="http://java.io">java.io</a>.</em>,java.util.*

errorPage="" %>

<%

String strConnString = null;

Connection oDbConn;

Statement oStmt;

ResultSet oResult;

String strConnection = null;

String strUserId = c_erober;

String strUserPwd = sybdev99;

String strDatabase = oraITAS;

String strPhotoId;

strConnString = jdbc:odbc: + strDatabase;

String strSql;

try {

strPhotoId = (String) request.getParameter(PhotoId);

strSql = select photo_image from photo + ( (strPhotoId==null) ? " where photo_id = ‘001’": (" where photo_id = ‘" + strPhotoId + "’") );
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());

oDbConn = DriverManager.getConnection(strConnString,strUserId,strUserPwd);

response.setContentType(image/jpeg);

oStmt = oDbConn.createStatement();

oResult = oStmt.executeQuery(strSql);
oResult.next();

byte[] bytearray = new byte[4096];

int size=0;

InputStream sImage;

sImage = oResult.getBinaryStream(1);

response.reset();

response.setContentType(image/jpeg);

response.addHeader(Content-Disposition,filename=getimage.jpeg);

while((size=sImage.read(bytearray))!= -1 ) {

response.getOutputStream().write(bytearray,0,size);

}

response.flushBuffer();

sImage.close();

oDbConn.close();

} catch (SQLException ex) { ex.getMessage();

}

%>

O código acima é bem didático, mas aconselho usar servlets e não páginas jsp para abrir a conexão, fazer consulta ao banco e returnar a imagem.
Espero ter ajudado.

roneyguj

:slight_smile: como eu faria isso no struts?

resgatar a imagem do banco e mostrar na web usando action do struts

bom eu tenho um form bean que possui

String cod_tipo;
String nome_tipo;

e eu gostaria de usar img_tipo

fazer um action e enviar o img_tipo

na pagina eu gostaria de usar <logic:iterator id=“tipos” name=“listatipos” >

<bean:write name=“tipos” property=“cod_tipo”>
<bean:write name=“tipos” property=“nome_tipo”>
<aqui eu queria poder colocar a imagem :slight_smile: tipo property=“img_tipo”>

</logic:iterator>

tem alguma forma deu conseguir isso aproveitando o action?

K

Camilo Sales:
Estou desenvolvendo uma aplicação que grava e recupera imagens do banco Oracle. Para exibir a imagem você precisa de um servlet, action (struts) ou jsp que:

  • abra uma conexão com o banco
  • faça um select na imagem
  • peque um stream da imagem
  • sete o content do response como image/jpeg
  • e retorne os bytes do stream
    Na pagina jsp que vai exibir a imagem o segredo é chamar o servlet, action ou pagina jsp que retorna o conteúdo da imagem no campo src da tag html img: <img src=‘seuservlet?FotoId=id’>, passando o id da foto que será buscada no banco como parâmetro.
    Segue um exemplo:
/** getphoto.jsp codigo fonte <em>/

<%<a class="mention" href="/u/page">@page</a> import="java.sql.</em>,oracle.jdbc.*"%>

<html>

<head>

<title>jsp1</title>

</head>

<body bgcolor="#ffffff">

<table width=“781” border=“2”>

<tr>

<td width=“83” bgcolor="#C0C0C0">

<b>PhotoId</b>

</td>

<td width=“450” bgcolor="#C0C0C0">

<b>Description</b>

</td>

<td width=“228” bgcolor="#C0C0C0">

<b>Photo Image</b>

</td>

</tr>

<%

Connection conn = null;

Statement stmt = null;

ResultSet rset = null;

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

conn = DriverManager.getConnection(jdbc:oracle:thin:@itas:1521:oraITAS,yourDbUserId,yourDbPassword);

stmt = conn.createStatement();

rset = stmt.executeQuery(select photo_id,photo_description from photo);

while (rset.next()) {

%>

<tr>

<td width=“83”>

<%=rset.getObject(photo_id)%>

</td>

<td width=“450”>

<%=rset.getObject(photo_description)%>

</td>

<td width=“228”>

<img src=“getimage.jsp?PhotoId=<%=rset.getObject(photo_id)%> width=“238” height=“228”>

</td>

</tr>

<%

}

conn.close();

%>

</table>

</body>

</html>

/** getimage.jsp codigo fonte*/

<%@ page contentType=image/jpeg; chaoResult=iso-8859-1

language=java import=java.sql.<em>,<a href="http://java.io">java.io</a>.</em>,java.util.*

errorPage="" %>

<%

String strConnString = null;

Connection oDbConn;

Statement oStmt;

ResultSet oResult;

String strConnection = null;

String strUserId = c_erober;

String strUserPwd = sybdev99;

String strDatabase = oraITAS;

String strPhotoId;

strConnString = jdbc:odbc: + strDatabase;

String strSql;

try {

strPhotoId = (String) request.getParameter(PhotoId);

strSql = select photo_image from photo + ( (strPhotoId==null) ? " where photo_id = ‘001’": (" where photo_id = ‘" + strPhotoId + "’") );
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());

oDbConn = DriverManager.getConnection(strConnString,strUserId,strUserPwd);

response.setContentType(image/jpeg);

oStmt = oDbConn.createStatement();

oResult = oStmt.executeQuery(strSql);
oResult.next();

byte[] bytearray = new byte[4096];

int size=0;

InputStream sImage;

sImage = oResult.getBinaryStream(1);

response.reset();

response.setContentType(image/jpeg);

response.addHeader(Content-Disposition,filename=getimage.jpeg);

while((size=sImage.read(bytearray))!= -1 ) {

response.getOutputStream().write(bytearray,0,size);

}

response.flushBuffer();

sImage.close();

oDbConn.close();

} catch (SQLException ex) { ex.getMessage();

}

%>

O código acima é bem didático, mas aconselho usar servlets e não páginas jsp para abrir a conexão, fazer consulta ao banco e returnar a imagem.
Espero ter ajudado.

god bless you !!

J

mas como eu faço para mostrar varias imagens em uma tabela no jsp , pegando a imagem de uma pasta do servidor???

Criado 25 de novembro de 2003
Ultima resposta 20 de abr. de 2012
Respostas 5
Participantes 6