如何在JSP中使用标记显示图像

时间:2013-08-01 17:46:22

标签: java image jsp struts2 blob

以下是在动作类中检索图像的代码。我试过了,但无法显示它我不知道图像处理。我应该如何在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;

  }

2 个答案:

答案 0 :(得分:0)

您应该通过实现自定义结果类型以struts 2方式在JSP上显示图像。

Here is an Example for displaying dynamic image in Stuts2

它通过实现Result接口创建自定义结果类型。

public class CustomImageBytesResult implements Result {
.
.
.
}

答案 1 :(得分: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

相关问题