有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hi我需要帮助在我的JSP页面中传输图像

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

共 (1) 个答案

  1. # 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脚本和表达式(<% %><%= %>)现在已经是古董了,除非你有一些旧代码可以恢复,否则永远不要使用它们

    关于数据库表、BLOB字段,您没有给出足够的详细信息,甚至问题中有随机注释的代码,很难决定是否使用它们