好的,所以我想在jsp页面上显示一个图像以及用户的名字和姓氏,但我只得到的图像不是名字和姓氏......那么这里有什么问题? ... ...将帮助您的帮助:)
<%@ page language="java" contentType="text/html; charset=windows-1256"
pageEncoding="windows-1256"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>Insert title here</title>
</head>
<body>
<H1>Fetching Data From a Database</H1>
<%
Blob image = null;
byte[] imgData = null;
Connection con;
String url="jdbc:mysql://localhost:3306/image";
String uName="root";
String pwd="root";
Class.forName("com.mysql.jdbc.Driver").newInstance();
con=DriverManager.getConnection(url,uName,pwd);
String sql="Select * from image ";
PreparedStatement stmt=con.prepareStatement(sql);
ResultSet resultset=stmt.executeQuery();
while(resultset.next())
{
Blob bl = resultset.getBlob("image");
byte[] pict = bl.getBytes(1,(int)bl.length());
response.setContentType("image/jpg");
OutputStream o = response.getOutputStream();
%>
<TABLE BORDER="1">
<TR>
<TH>First Name</TH>
<TH>Last Name</TH>
<TH>picture</TH>
</TR>
<TR>
<td>Image</td><td><%o.write(pict);%></td>
<%o.flush();
o.close();%>
<TD> <%= resultset.getString(2) %> </TD>
<TD><%= resultset.getString(3) %></TD>
</TR>
</TABLE>
<BR>
<%
o.flush();
o.close();
}
%>
</body>
</html>
答案 0 :(得分:0)
您的代码包括在写完图片后再拨打o.close()
。这将关闭响应输出流,不会再发送任何内容。不要这样做 - 让Web容器负责关闭输出流。
这应解释为什么不应显示名字和姓氏:响应流已关闭。
另外,我不认为响应内容类型应该是“image / jpg”,特别是考虑到HTML元标记如何说内容是“text / html”。我认为它们应该是相同的 - “text / html”。
最后 - 也许最重要的是? - JSP很老了。您可能需要考虑使用Facelets(JavaServer Faces技术)。