Привет мне нужна помощь в потоковом изображении на моей странице JSP - PullRequest
0 голосов
/ 02 марта 2012

Хорошо, я создал сайт загрузки музыки, который загружает музыку 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:

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

1 Ответ

0 голосов
/ 04 марта 2012

Прежде всего, где вы вызываете этот processRequest(..) метод?

Вы уверены, что вы включили вызов для processRequest(..) в метод doGet(..) этого сервлета следующим образом:

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

Проверяли ли вы вывод известной записи, запрашивая

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

Ваш сервлет правильно отвечает изображением JPEG? Если нет, то вам следует проверить свой код сервлета.

Также измените выражение на странице просмотра на это:

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

Эти скриптлеты и выражения JSP (<% %> и <%= %>) теперь являются старинными реликвиями, вы НИКОГДА не должны их использовать, если только у вас нет старого кода для воскрешения.

Вы не предоставили достаточно информации о своей таблице базы данных, поле BLOB, даже если в вашем вопросе есть случайный закомментированный код, из-за которого трудно определить, использовали ли вы их или нет.

...