簡體   English   中英

嗨,我需要在JSP頁面中流式傳輸圖像方面的幫助

[英]Hi I need help in streaming image in my JSP page

好的,所以我創建了一個音樂上傳網站,可以上傳OGG音樂。 它還集成了音頻標記器。 我還將專輯封面作為字符串放入到數據庫中。

現在,我想在我的JSP中顯示該字符串(代表我的專輯封面):

@WebServlet(name = "LoadAlbumArt", urlPatterns = { "/LoadAlbumArt" })
public class LoadAlbumArt extends HttpServlet {
   /** 
    * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
    * @param request servlet request
    * @param response servlet response
    * @throws ServletException if a servlet-specific error occurs
    * @throws IOException if an I/O error occurs
    */
   protected void processRequest(HttpServletRequest request,
         HttpServletResponse response) throws ServletException, IOException {
      response.setContentType("image/jpg");
      try {
         OutputStream outputStream = response.getOutputStream();
         DBConnector bConnector = new DBConnector();
         PreparedStatement preparedStatement = bConnector
               .Connect("SELECT * FROM devwebmp3.musicdatabase where musicno = ?");
         preparedStatement.setInt(1,
               Integer.parseInt(request.getParameter("musicno")));
         ResultSet resultSet = preparedStatement.executeQuery();
         Blob blob = null;
         String imagestring = null;
         while (resultSet.next()) {
            imagestring = resultSet.getString("albumart");
         }

         //BufferedImage bi = ImageIO.read(ImageIO.createImageInputStream(new ByteArrayInputStream(Base64Coder.decode(imagestring.toCharArray()))));

         //outputStream.write(blob.getBytes(1, (int) blob.length()));
         byte[] hello = Base64Coder.decode(imagestring);
         //ImageIO.write(bi, "jpg", outputStream);
         //System.out.println("byte" + hello);
         outputStream.write(hello);
         outputStream.flush();
         outputStream.close();
      } catch (Exception e) {
         // ...
      }

      // ...
   }
}

另外,這是java servlet頁面:

src=<%="\"LoadAlbumArt?musicno="+request.getParameter("musicno") +"\""%>>

首先,在哪里調用此processRequest(..)方法?

您確定在該servlet的doGet(..)方法中包括對processRequest(..)的調用,如下所示:

public void doGet(HttpServletRequest req, HttpServletResponse resp) 
                                   throws ServletException, IOException {
    processRequest(req,resp);
}

您是否通過請求檢查了已知記錄的輸出

http://.../LoadAlbumArt?musicno=1 

您的Servlet是否正確響應JPEG圖像? 如果不是,則應檢查Servlet代碼。

另外,將“視圖”頁面中的表達式更改為此:

<img src="/LoadAlbumArt?musicno=${param.musicno}" />

那些JSP腳本和表達式( <% %><%= %> )現在是古董,您除非有一些舊代碼可以復活,否則永遠不要使用它們。

您沒有提供有關數據庫表BLOB字段的足夠詳細信息,即使您的問題中包含隨機注釋的代碼,也很難決定是否使用它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM