【问题标题】:Hi I need help in streaming image in my JSP page嗨,我需要帮助在我的 JSP 页面中流式传输图像
【发布时间】:2012-03-02 02:39:29
【问题描述】:

好的,所以我创建了一个上传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") +"\""%>>

【问题讨论】:

  • @CengizCan 抱歉,我的问题是为什么它没有出现在我的网站上?
  • 你说“它没有出现在我的网站上”是什么意思?任何错误信息/代码?您使用什么容器或应用程序服务器?什么浏览器?

标签: java image jsp servlets outputstream


【解决方案1】:

首先,你在哪里调用这个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 脚本和表达式(&lt;% %&gt;&lt;%= %&gt;)现在是古董,除非你有一些旧代码要复活,否则你不应该使用它们。

您没有提供有关数据库表、BLOB 字段的足够详细信息,即使您的问题中有随机注释代码,也很难确定您是否使用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 2022-01-04
    • 1970-01-01
    • 2013-03-07
    相关资源
    最近更新 更多