2016-12-18 7 views
0

私はあなたの助けが必要です。私は、jspファイルにデータベースからすべての画像を表示したい(そこに6つの画像がある)。なぜJSPファイルで、出力リーダーを使用しないのですか? - >私はこの特別な方法でこれを行う必要があるので、私は次のステップでCSSを使用してテーブルのスタイルを設定したいので。データベース(blob)のすべてのイメージをテーブルのjspファイルに表示

データベースのすべての画像を選択します。

public static List<Picture> displayPicture() { 

List<Picture> list = new ArrayList<Picture>(); 

try { 

    Class.forName("com.mysql.jdbc.Driver"); 

    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:9999/xxx", "xxx", "xxx"); 

    String sql = "SELECT * FROM PICTURES"; 

    PreparedStatement ps = conn.prepareStatement(sql); 

    ResultSet rs = ps.executeQuery(); 

    while (rs.next()) { 

     byte[] imageData = rs.getBytes("File_Data"); 
     String imageFileName = rs.getString("File_Name"); 

     Picture picture = new Picture(); 
     picture.setImageData(imageData); 
     picture.setImageFileName(imageFileName); 
     list.add(picture); 
    } 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
return list; 

は、今私は、JSP-ファイルにそれを送信するためのsetAttributeでこのリストを保存する:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
List<Picture> list =null; 
list = DBUtils.displayPicture(); 

request.setAttribute("pictureList", list); 

RequestDispatcher dispatcher = request.getServletContext().getRequestDispatcher("/WEB-INF/views/pictureView.jsp"); 
dispatcher.forward(request, response); 

そして最後にJSP-ファイル:

<table> 
<c:forEach items="${pictureList}" var="picture"> 
    <tr> 
     <td>${picture.imageData}</td> 
    </tr> 
</c:forEach> 

だから私はすべての画像をテーブルに表示したい。現時点では、どのようにテーブルがどのように見えるかは重要ではありません。このコードでは、私は特別な数字と文字を持つテーブルだけを取得します。私はそのバイナリコードだと思いますよね? (例:[email protected]または[B @ 3f391312])

ここで間違いはどこですか? JSPファイルのコードで私は使用する必要があります

<img src=""> 

または何か他のですか?これが間違いだった場合、これをどのようにコーディングすべきですか?

は君たち

各位初心者

+0

あなたは 'base64'形式に画像データを変換することはできますか? –

+0

これはあなたを助けるかもしれません:http://stackoverflow.com/questions/2340406/how-to-retrieve-and-display-images-from-a-database-in-a-jsp-page –

+0

@AtaurRahmanMunna私はすでに試してみましたbase64しかし私は働いていませんでした。あなたがbase64でそれをするなら、あなたはそれをどのように解決しますか? – newbieQwer

答えて

0

コントローラ側のコードスニペットを使用してくださいありがとうございました。

List<String> list = new ArrayList<String>(); 
while (rs.next()) { 
    byte[] imageData = rs.getBytes("File_Data"); 
    list.add(org.apache.commons.codec.binary.Base64.encodeBase64String(imageData)); 
} 
request.setAttribute("pictureList", list); 

そして、そのようなHTMLページでそれを示したが、

<table> 
    <c:forEach items="${pictureList}" var="picture"> 
     <tr> 
      <td><img src="data:image/jpg;base64,${picture}"/></td> 
     </tr> 
    </c:forEach> 
</table> 
関連する問題