我有一个MySQL数据库,我有以下列: firtname 姓氏灯泡
我有一个servlet和一个表单,可以将图片上传到我的MySQL数据库,这是成功的。当我从我的数据库下载图片时,它会得到正确的图片。我现在想在浏览器中显示图片,因此我尝试制作一个表单和一个servlet。当我要求图片时,我只是得到一个问号。有谁知道为什么会这样?
最诚挚的问候 MADS
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Get Image</title>
</head>
<body>
<p>Here you can see the image</p>
<img src="ImageServlet">
</body>
</html>
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(urlPatterns = {"/ImageServlet"})
public class ImageServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException{
//PrintWriter pw = response.getWriter();
String connectionURL = "jdbc:mysql://localhost/dblogin";
Connection connection = null;
response.setContentType("image/jpg");
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL,"root","");
Statement st1 = connection.createStatement();
ResultSet rs1 = st1.executeQuery
("SELECT image FROM photo WHERE lastname='test'");
if(rs1.next()){
InputStream is = rs1.getBinaryStream("photo");
byte[] b = new byte[10240];
int n;
while((n = is.read(b)) >= 0) {
response.getOutputStream().write(b, 0, n);
System.out.println(n);
}
is.close();
st1.close();
}
}
catch (Exception e){
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
这是正确的代码:
package jsp;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet(urlPatterns = {"/ImageServlet"})
public class ImageServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException{
//PrintWriter pw = response.getWriter();
String connectionURL = "jdbc:mysql://localhost/dblogin";
Connection connection = null;
response.setContentType("image/jpg");
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
connection = DriverManager.getConnection(connectionURL,"root","");
Statement st1 = connection.createStatement();
ResultSet rs1 = st1.executeQuery
("SELECT photo FROM login WHERE lastname='test'");
if(rs1.next()){
InputStream is = rs1.getBinaryStream("photo");
byte[] b = new byte[10240];
int n;
while((n = is.read(b)) >= 0) {
response.getOutputStream().write(b, 0, n);
System.out.println(n);
}
is.close();
st1.close();
}
}
catch (Exception e){
e.printStackTrace();
}
}
}