2013-08-01 2 views
0

Вот код для извлечения изображения в классе действий. Я пробовал это, но не смог его отобразить. Я не знаю об обработке изображений. Как использовать теги в JSP для отображения изображения?Как показать изображение с помощью тега в JSP

public String displayImage() 
    { 
    Connection con = null; 
    PreparedStatement preparedStatement = null; 
    ResultSet resultSet = null; 
    String sql,result=""; 
    con=JdbcHelper.getConnection(); 
    if(con!=null) 
    { 
     try 
     { 
     sql = "SELECT INPUT_FILE_BLOB FROM message_details where message_id=?"; 
     preparedStatement = con.prepareStatement(sql); 
     preparedStatement.setString(1, messageid); 
     resultSet = preparedStatement.executeQuery(); 
     if(resultSet.next()) 
     { 
      Blob image = resultSet.getBlob("INPUT_FILE_BLOB"); 
      System.out.println("=============Image2\n" +image); 
      int len1 = (int) image.length(); 
      System.out.println("=============len1\n" +len1); 
      byte [] rb1 = new byte[len1]; 
      InputStream readImg1 = resultSet.getBinaryStream(1); 
      try { 
      int index1=readImg1.read(rb1, 0, len1); 
      System.out.println("index1"+index1); 
      response.reset(); 
      response.setContentType("image/jpg"); 
      response.getOutputStream().write(rb1,0,len1); 
      response.getOutputStream().flush(); 
      } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
      } 
     } 
     } 
     catch(SQLException e) 
     { 
     try 
     { 
      con.rollback(); 
     } 
     catch (SQLException e1) 
     { 
      result = e1.getMessage(); 
      e.printStackTrace(); 
     } 
     result = e.getMessage(); 
     e.printStackTrace(); 
     } 
     finally 
     { 
     JdbcHelper.close(resultSet); 
     JdbcHelper.close(preparedStatement); 
     JdbcHelper.close(con); 
     } 
    } 
    else 
     result = Constants.SUCCESS; 

    } 
+0

Используйте тег img, указывающий URL-адрес этого действия. –

ответ

0

Вы должны сделать это в распорках путь 2 путем реализации пользовательского типа результата для отображения изображения на JSP.

Here is an Example for displaying dynamic image in Stuts2.

Он создает настраиваемый тип результата, реализуя интерфейс Result.

public class CustomImageBytesResult implements Result { 
. 
. 
. 
} 
+0

спасибо .... но в этом примере не удалось найти, как получить изображение из базы данных – Akshobhya

+0

Нет причин использовать настраиваемый тип результата; используйте «поток». Наряду с существующими библиотеками Apache Commons он заканчивается на несколько строк. –

+0

@Akshobhya: просто напишите свою логику, чтобы получить изображение из DB внутри метода #getImageFile. –

0

После извлечения изображения из базы данных Blob или байтового массива, который вы пишете непосредственно в ответ. В этом случае вы не должны возвращать результат SUCCESS, вам нужно вернуть результат NONE. Затем в JSP вы можете получить доступ к изображению в виде отдельного потока, используя тег img, который вызовет ваше действие, которое вернет изображение.

См. Также How can we display dynamic or static images that can be provided as an array of bytes, и How to display image in Struts2.

+0

спасибо ........... ниже кода public class MyAction расширяет ActionSupport { public String doDefault() { return "myImageResult"; } общественного Byte [] getMyImageInBytes() {....} общественности Строка getMyContentType() {...} общественности Строка getMyContentDisposition() {...} общественного ИНТ getMyContentLength() {... .} public int getMyBufferSize() {...} } это просто методы getter или нам нужно написать код внутри этих методов? – Akshobhya

+0

Вы можете предоставить код с фактическими значениями, он переопределит параметры результата. Но вы также можете использовать обычные геттеры и сеттеры в результате для установки параметров там через config. Альтернативный подход - использование «StreamResult» с соединением ByteArrayInputStream, который обертывает массив байтов для результата, также может решить вашу проблему. –

Смежные вопросы