2014-02-17 12 views
0

像我有一個MySQL數據庫,在那裏我有以下欄目: firtname 姓氏燈泡問號從MySQL的

我有一個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

這是正確的代碼:

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(); 
      } 
     } 
    }