从oracle数据库中检索图像并在jsp中显示图像

时间:2015-08-28 11:28:43

标签: oracle jsp jdbc blob

我想从名为Image的表和名为image的列中检索类型为blob的图像,但在运行代码时,它会给出像这样的blob代码 -

  

“oracle.sql.BLOB@193242d”

请参阅我的代码获取并在jsp页面/浏览器上显示图像: -

ResultSet resultset = 
     statement.executeQuery("select * from image where id = '" + id + "'") ; 

浏览器页面: -

    <TABLE border="1">
        <TR>
           <TH>ID</TH>
           <TH>picture</TH>
       </TR>
       <TR>
           <TD> <%= resultset.getString(1) %> </TD>
           <TD> <%= resultset.getBlob(2) %> </TD>
       </TR>
   </TABLE>
   <BR>

2 个答案:

答案 0 :(得分:1)

<强>首先

oracle.sql.BLOB@193242dtoString()方法的回复,而不是图片。

<强>第二

ResultSet resultset = 
     statement.executeQuery("select * from image where id = '" + id + "'") ; 

为了SQL注入,请!

<强>最后
您无法在image内回复text数据!必须通过单独的cgi / servlet检索图像,其中内容类型设置为image,因此适用于您的情况。

<TD> <%= resultset.getString(1) %> </TD>
<TD> <img src="/get_img?id="<%=id%>/> </TD>

稍后你需要一个servlet / cgi来响应图像为get_img

@WebServlet(name = "img", urlPatterns = {"/get_img"})
public class get_img extends HttpServlet{
doGet(HttpServletRequest req, HttpServletResponse resp){
...
 resp.setContentType("image/jpg");//or image/whatever
  try(ResultSet rs=ps.executeQuery()){//where ps is a PreparedStatement
   //set the content length, and respond image data
   //example: http://stackoverflow.com/a/4332975/5266804
  }
...
}
}

答案 1 :(得分:0)

您可以创建一个servlet来提供来自DB的图像,请参阅How to retrieve images from database and place on JSP?

或者您可以将图片数据直接嵌入到图片代码的src属性中:I want to retrieve image from mysql database using servlet and show that image along with that user details in table - 虽然这仅适用于小图片(图标等)。