我使用 html 和 jsp 在 netbeans 中开发了一个 Web 应用程序,并且我必须在索引中显示来自数据库的图像。
类中有管理数据库的方法
public byte[] getImg(Connection connect, User user) throws SQLException {
byte[] blobAsBytes = null;
Statement statement = null;
ResultSet rs = null;
statement = connect.createStatement();
rs = statement.executeQuery("select * from user");
while (rs.next()) {
if (rs.getString("nickName").equals(user.getNickName())) {
Blob blob = rs.getBlob("img");
int blobLength = (int) blob.length();
blobAsBytes = blob.getBytes(1, blobLength);
blob.free();
}
}
return blobAsBytes;
}
然后我尝试在jsp页面中使用它。
<jsp:useBean id="database" scope="session" type="Datos.ControlDatos"/>
<jsp:useBean id="access" scope="session" type="Datos.DataAccess"/>
<%
byte[] imgData = database.getImg(access.createConnection(),user);
response.setContentType("image/jpeg");
response.getOutputStream().write(imgData);
%>
问题是我遇到了这个异常:
org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:585)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
那么有没有一种方法可以在jsp页面中将图像显示为字节数组?
最佳答案
您的 JSP 页面已经将 HTML 流式传输到客户端。每个请求只能返回一种响应类型。您不需要尝试将字节嵌入到页面中,而是需要添加一个指向另一个 URL 的 img 标签,该 URL 提供 image/jpeg 类型的新响应。
关于java - 在jsp中显示字节数组中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24577092/