【发布时间】:2025-12-15 18:55:01
【问题描述】:
我有一个显示员工图表的代码。
数据(姓名、电话、照片等)存储在 SQLServer 中并通过 JSP 显示。 显示数据没问题,除了图片 .jpg(存储在 IMAGE=BLOB 列中)。
顺便说一句,我已经显示了图像(参见下面的代码),但我不知道如何将它放在 .css 中定义的区域中(也参见下面的代码),因为图像在浏览器中通过resultSet加载整个页面。
有谁知道我如何“构图”图像?
<%
Connection con = FactoryConnection_SQL_SERVER.getConnection("empCHART");
Statement stSuper = con.createStatement();
Statement stSetor = con.createStatement();
Blob image = null;
byte[] imgData = null;
ResultSet rsSuper = stSuper.executeQuery("SELECT * FROM funChart WHERE dept = 'myDept'");
if (rsSuper.next()) {
image = rsSuper.getBlob(12);
imgData = image.getBytes(1, (int) image.length());
response.setContentType("image/gif");
OutputStream o = response.getOutputStream();
//o.write(imgData); // even here we got the same as below.
//o.flush();
//o.close();
--[...]
<table style="margin: 0px; margin-top: 15px;">
<tr>
<td id="photo">
<img title="<%=rsSuper.getString("empName").trim()%>" src="<%= o.wite(imageData); o.flush(); o.close(); %>" />
</td>
</td>
<td id="empData">
<h3><%=rsSuper.getString("empName")%></h3>
<p><%=rsSuper.getString("Position")%></p>
<p>Id:<br/><%=rsSuper.getString("id")%></p>
<p>Phone:<br/><%=rsSuper.getString("Phone")%></p>
<p>E-Mail:<br/><%=rsSuper.getString("Email")%></p>
</td>
</table>
这里是用来构图的片段:
#photo
{
padding: 0px;
vertical-align: middle;
text-align: center;
width: 170px;
height: 220px;
}
提前致谢!
【问题讨论】:
-
标准解决方案是将 HTML(此处)与图像分开,通常由另一个响应浏览器请求的 servlet 提供服务。所以 JSP 页面只包含类似
<img src=myservlet?img=someId>的内容,并且您有一个 servlet,您可以在其中响应图像的二进制文件。另一种解决方案(我不推荐)是在 JSP 页面中以 base64 格式发送图像。
标签: java jakarta-ee