在 JSP 中显示图像(来自数据库)
Display image (from database) in JSP
我想知道如何在 for 循环中的 JSP 页面中显示图像。从数据库访问图像。下面是我的代码,我希望图像正好位于 "<img src="<%= product.thumbnail %>"/>"
行所在的位置。
我的代码简短而简单:
<%
for(int i=0; i<keys.length;i++){
Product product = sdb.getProduct(keys[i].toString());
out.println( "<p>" + product.title + " " + "<img src="<%= product.thumbnail %>"/>" + "</p>" );
}
%>
谢谢
--编辑后添加--
生成HTML:
<html>
<body>
<p>Linez 99.99 1</p>
<p>Stax 49.99 3</p>
<p> Order total = 249.96
<form action="order.jsp" method="post">
<input type="text" name="name" size="20">
<input type="submit" value="Place Order" />
</form>
<form action="basket.jsp" method="get">
<input type="hidden" name="emptyBasket" value="yes">
<input type="submit" value="Empty Basket" />
</form>
</body>
</html>
我认为您还需要做一些工作才能实现这一目标。 img<> 标签需要一个 URL,并且不能神奇地将数据库 blob 或类似的 URL.
我的方法是:
- 创建一个从数据库提供缩略图的 servlet,并像 /myApp/product/thumbnails?productId=12345
一样发布 URLs
- 从浏览器测试您的 servlet
- 更改您的 JSP 以创建这些 URL。
祝你好运。
You need to use InputStream in your code i assure you this will work perfectly.
for info search it on google it.
1) a.jsp page
<img src="image.jsp?imgid=<%=rs.getInt(1)%>" alt="<%= rs.getString("title")%>" style="width:280px; height:320px">
2) Put following code another jsp page
int id = Integer.parseInt(request.getParameter("imgid"));//imgid from a.jsp
try {
String strQuery = "select book_image from tblbooks where id=" + id;
ResultSet rs = st.executeQuery(strQuery);
String imgLen = "";
if (rs.next()) {
imgLen = rs.getString(1);
}
rs = st.executeQuery(strQuery);
if (rs.next()) {
int len = imgLen.length();
byte[] rb = new byte[len];
InputStream readImg = rs.getBinaryStream(1);
int index = readImg.read(rb, 0, len);
st.close();
response.reset();
response.getOutputStream().write(rb, 0, len);
response.getOutputStream().flush();
}
} catch (Exception e) {
e.printStackTrace();
}
我想知道如何在 for 循环中的 JSP 页面中显示图像。从数据库访问图像。下面是我的代码,我希望图像正好位于 "<img src="<%= product.thumbnail %>"/>"
行所在的位置。
我的代码简短而简单:
<%
for(int i=0; i<keys.length;i++){
Product product = sdb.getProduct(keys[i].toString());
out.println( "<p>" + product.title + " " + "<img src="<%= product.thumbnail %>"/>" + "</p>" );
}
%>
谢谢
--编辑后添加--
生成HTML:
<html>
<body>
<p>Linez 99.99 1</p>
<p>Stax 49.99 3</p>
<p> Order total = 249.96
<form action="order.jsp" method="post">
<input type="text" name="name" size="20">
<input type="submit" value="Place Order" />
</form>
<form action="basket.jsp" method="get">
<input type="hidden" name="emptyBasket" value="yes">
<input type="submit" value="Empty Basket" />
</form>
</body>
</html>
我认为您还需要做一些工作才能实现这一目标。 img<> 标签需要一个 URL,并且不能神奇地将数据库 blob 或类似的 URL.
我的方法是:
- 创建一个从数据库提供缩略图的 servlet,并像 /myApp/product/thumbnails?productId=12345 一样发布 URLs
- 从浏览器测试您的 servlet
- 更改您的 JSP 以创建这些 URL。
祝你好运。
You need to use InputStream in your code i assure you this will work perfectly. for info search it on google it.
1) a.jsp page
<img src="image.jsp?imgid=<%=rs.getInt(1)%>" alt="<%= rs.getString("title")%>" style="width:280px; height:320px">
2) Put following code another jsp page
int id = Integer.parseInt(request.getParameter("imgid"));//imgid from a.jsp
try {
String strQuery = "select book_image from tblbooks where id=" + id;
ResultSet rs = st.executeQuery(strQuery);
String imgLen = "";
if (rs.next()) {
imgLen = rs.getString(1);
}
rs = st.executeQuery(strQuery);
if (rs.next()) {
int len = imgLen.length();
byte[] rb = new byte[len];
InputStream readImg = rs.getBinaryStream(1);
int index = readImg.read(rb, 0, len);
st.close();
response.reset();
response.getOutputStream().write(rb, 0, len);
response.getOutputStream().flush();
}
} catch (Exception e) {
e.printStackTrace();
}