使用servlet显示blob字段中的图像

时间:2013-10-18 17:37:56

标签: java jsp servlets

我创建了一个jsp页面,该页面调用另一个jsp页面,该页面显示我的mysql数据库中blob字段的图像:

<img src="blob.jsp"> 

它有效。但是,在这个论坛的某个地方,我读到这不是正确的方法。相反,我应该这样使用servlet:

 <img src="servlet_name">

我创建了一个servlet,但它会向我显示它向我显示的图像

ÿØÿàJFIFHHÿí$Photoshop 3.08BIMí ResolutionHH8BIM FX Global Lighting Anglex8BIMFX Global Altitude8BIMó Print Flags 8BIM Copyright Flag8BIM'Japanese Print Flags 8BIMõColor Halftone SettingsH/fflff/ff¡™š2Z5-8BIMøColor Transfer Settingspÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM Layer State8BIM Layer Groups8BIMGuides@@8BIM URL overrides8BIMSlicesuƒD Untitled-1Dƒ8BIMICC Untagged Flag

这是我简单的servlet

package Jeans;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.sql.Blob;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/BlobDisplay")
public class BlobDisplay extends HttpServlet {
    private static final long serialVersionUID = 1L;
    GestioneDB gestioneDB ;


    public BlobDisplay() {
        super();       
    }


    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
            {       
        Blob image = null;
        byte[ ] imgData = null ;
        String query = null;
        query = request.getParameter(query);        

        gestioneDB = new GestioneDB();

        ResultSet rs =  gestioneDB.rs("select immagine_principale from news where id ='217'");

            try{
            if (rs.next()) {
            image = rs.getBlob("immagine_principale");
            imgData = image.getBytes(1,(int)image.length());

            response.setContentType("image/jpg");
            OutputStream o = response.getOutputStream();
            o.write(imgData);
            o.flush();
            o.close();
            }
        }
        catch(Exception e){}    
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  

         this.doGet(request,response);
    }

}

1 个答案:

答案 0 :(得分:0)

以下是调试提示。

JSP只是“由内而外”的servlet,它们被容器转换为servlet。由于您的JSP工作而您的servlet不工作,为什么不检查(并发布)生成的servlet。如果您使用的是tomcat,它将位于file called blob__jsp.java deep in the work directory中。然后比较servlet的调用和设置以及生成的servlet。

(我的第一个猜测是内容类型,但您似乎正在设置)