gpt4 book ai didi

mysql - 如何从 mysql 中检索一系列图像并在 JSP 中显示它们

转载 作者:行者123 更新时间:2023-11-29 03:07:57 24 4
gpt4 key购买 nike

我正在尝试通过从 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);

}

备忘录列表.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

最佳答案

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

在 html 中我有 < img src="/imageRender?id=someimageid"/ >

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

一些有用的链接是:

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 对象列表,这些对象将代表数据库中的每一行。

关于mysql - 如何从 mysql 中检索一系列图像并在 JSP 中显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12560876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com