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

Retrieve image from oracle database and show image in jsp

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

"oracle.sql.BLOB@193242d"

请参阅我的代码以在 jsp page/browser 上获取和显示图像:-

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>

您可以创建一个 servlet 来提供来自数据库的图像,请参阅 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 - 虽然这仅适用于小图像(图标等)。

第一个:

oracle.sql.BLOB@193242dtoString()方法的响应,不是图像。

第二个:

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

为了SQL注射,拜托!

终于
你不能用心里的 text 数据来回应 image!图片必须通过单独的 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: 
  }
...
}
}