2011-07-23 11 views
-3


How to retrieve and display images from a database in a JSP page?はJSPでデータベースから画像を取得する(しかし、私は特定の場所に画像を取得することはできませんよ)

私は<td>で画像を表示したいですテーブルのタグ。コードが正常に動作しているが、私は(JSP)ページが動作しないことができる HTML内の異なるコンテンツタイプを設定

<%@page contentType="text/html"%> 
<%@page pageEncoding="UTF-8"%> 
<%@page import="java.sql.*,java.io.*"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>Untitled Document</title> 
    </head> 

    <body> 
     <%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection con = DriverManager.getConnection("jdbc:odbc:IMG"); 
     Statement st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
     ResultSet rs=st.executeQuery("select image from img"); 

     %> 
     <table width="100%" border="2"> 
      <tr> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
       <td>&nbsp;</td> 
      </tr> 
      <% 
      while(rs.next()) { 
      byte[] bytearray = new byte[1048576]; 
      int size=0; 
      InputStream sImage = rs.getBinaryStream(1); 

      response.reset(); 
      response.setContentType("image/jpeg"); 
      while((size=sImage.read(bytearray))!= -1){ 
      %> 
      <tr> 
       <td>&nbsp;</td> 
       <td><img src="<%= response.getOutputStream().write(bytearray,0,size)%>"width=50 height=50 /></td> 
       <td>&nbsp;</td> 
      </tr> 
      <% 
      } 
      }  
      %> 
      <tr> 
       <td></td> 
       <td></td> 
       <td></td> 
      </tr> 
     </table> 
    </body> 
</html> 
+0

は、大胆なキャップ、不可欠ということです悪い習慣(一般的に)であるJSP内で直接SQLを定義javax.sql.DataSource

  • を見てください?私はそれがそのように動作するかどうかはわかりません。 – Bozho

  • 答えて

    1

    テーブルの<td>タグで画像を取得することはできませんよ。 JSP内では、イメージへのリンクを生成する必要があります。ブラウザは、このために、あなたがサーブレットのようなものを必要とし、個別の要求に画像を要求します:

    1.ステップ:JSP

    を生成
    <%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
        Connection con = DriverManager.getConnection("jdbc:odbc:IMG"); 
        Statement st=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); 
    
        /* you need an identifier for each image, like an ID */ 
        ResultSet rs=st.executeQuery("select name, image from img"); 
    
        %> 
        <table width="100%" border="2"> 
         <tr> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
          <td>&nbsp;</td> 
         </tr> 
         <% 
         while(rs.next()) { 
         %> 
         <tr> 
          <td>&nbsp;</td> 
          <td><img src="${path_to_your_image_serving_resource}/<%=rs.getString("name")%>"width=50 height=50 /></td> 
          <td>&nbsp;</td> 
         </tr> 
         <% 
         }  
         %> 
        </table> 
    

    2ステップ:サーブレットを作成

    サーブレットは${path_to_your_image_serving_resource}/*をlistenする必要があります。ブラウザがこのURLを要求した場合、その名前に基づいてイメージを取得し、レスポンスのCoorectコンテンツタイプを設定し、バイトをブラウザに戻します。

    HTML/HTTPでは、イメージは独立したリソースであることに注意してください。

    はところで:あなたは慎重にあなたのデザインを見てください。

    • あなたは、接続プールを使用しませんが、その代わりにDriverManagerとは、リクエストごとにデータベースへの新しい接続を作成します。これはうまく動作せず、スケーラブルでもありません。
    +0

    私はこのすべての活動のために私に適切なコードを教えてくれますか? –

    +0

    メールで私に通知メールID [email protected] –

    +0

    @Sanjay Mewada:申し訳ありません、私はここにいませんあなたのアプリケーションを書く。ネット上のこれらのトピックすべての例が見つかります。 – home

    関連する問題