【问题标题】:How to retrieve series of images from mysql and display them in JSP如何从mysql中检索一系列图像并在JSP中显示它们
【发布时间】:2012-09-24 07:50:13
【问题描述】:

我正在尝试通过从 mysql 获取数据来构建一个数组。该数组包括文本和图片。到目前为止一切顺利,但现在我不知道如何在 JSP 页面上显示 memolist 中的这些图片。我所能看到的只是一堆字节。让我们看看:

我的 DBQueries 如下所示:

public static ArrayList<Memo> selectAllMemoList()
{
    DBConnectionPool pool = DBConnectionPool.getInstance();
    Connection connection = pool.getConnection();
    PreparedStatement ps = null;
    ResultSet rs = null;

    String query = "SELECT Users.picture, Users.username, Messages.subject, Messages.date, Messages.msg_id " +
            "FROM Messages, Users " +
            "WHERE Messages.uid_fk = Users.uid " +
            "ORDER BY date DESC";
    try
    {
      ps = connection.prepareStatement(query);
      rs = ps.executeQuery();

      ArrayList<Memo> memolist = new ArrayList<Memo>(); 

      String dbSqlTimestamp = "";

      while (rs.next()) {
         m.setUserpicture(rs.getString("picture"));
         m.setUsername(rs.getString("username"));
         m.setSubject(rs.getString("subject"));
         m.setDate(dbSqlTimestamp = new SimpleDateFormat("dd-MM-yy HH:mm").format(rs.getTimestamp("date")));
         m.setMessageid(rs.getInt("msg_id"));
         memolist.add(m);
      }

        return memolist;
    }
    catch (SQLException e){
        e.printStackTrace();
        return null;
    }        
    finally
    {
        DBUtil.closeResultSet(rs);
        DBUtil.closePreparedStatement(ps);
        pool.freeConnection(connection);
    }
}

我的 MemoShowAll 看起来像这样:

@Override
protected void doPost(HttpServletRequest request, 
          HttpServletResponse response)
          throws ServletException, IOException 
{   

    HttpSession session = request.getSession(); 

    ArrayList<Memo> memolist = DBQueries.selectAllMemoList();

    request.setAttribute("listmemo", memolist);

    String url = "/restricted/MemoList.jsp";

    // forward the request and response to the view
    RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url);
    dispatcher.forward(request, response); 

}

MemoList.jsp

<z:rows>
    <core:forEach var="each" items="${listmemo}">
    <z:row>
        <img src="${each.userpicture}" border=0 >
        <z:label value="${each.username}"/>
        <z:label value="${each.subject}"/>
        <z:label value="${each.date}"/>
    </z:row>
    </core:forEach>
</z:rows>

干杯, BB

【问题讨论】:

  • 字段 userpicture 中存储了什么?图片路径?以及图像存储在哪里?

标签: mysql jsp servlets


【解决方案1】:

我绕过这个问题的方法是使用 servlet 将图像公开给客户端。为此,您应该将从数据库检索到的图像字节存储到用户的session 对象中。

在 html 中我有 &lt; img src="/imageRender?id=someimageid"/ &gt;

因此,当浏览器尝试渲染图像时,它会调用 /imageRender 我的 servlet 侦听的位置。 servlet 会读取输入参数,然后根据参数从会话对象中渲染图像。

一些有用的链接是:

1) Display servlet as img src using session attribute

2)Writing image to servlet response with best performance

请特别注意链接 2 @BalusC 对In the ImageDAO#find() you can use ResultSet#getBinaryStream() to get the image as an InputStream from the database.的地方的回答

在您的情况下,您可以创建一个 DAO 对象列表,这些对象将代表 db 中的每一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2021-12-26
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    相关资源
    最近更新 更多