如何在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; } 

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

以下是在Stuts2中显示动态图像的示例 。

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

 public class CustomImageBytesResult implements Result { . . . } 

从数据库中检索图像为Blob或字节数组后,您将直接写入响应。 在这种情况下,您不应该返回SUCCESS结果,您需要返回NONE结果。 然后在JSP中,您可以使用img标记将图像作为单独的线程访问,该标记将调用返回图像的操作。

另请参见如何显示可以作为字节数组提供的动态或静态图像 ,以及如何在Struts2中显示图像 。