使用jquery从servlet检索Inputstream图像

时间:2013-12-10 20:46:08

标签: jquery json jsp servlets inputstream

我想使用jquery从mysql / servlet中检索图像到jsp。我创建了servlet,它从mysql中检索对象并将其解析为json,最后使用jquery显示对象属性。

运行jsp之后我得到了字符串属性,但不幸的是我的图像被破坏了。我想我有显示输入流图像的问题或者我错过了什么。请帮助

的index.jsp

   <script src="http://code.jquery.com/jquery-latest.js">   
    </script>
    <script>
    $(document).ready(function()
            {

        $.ajax
        ({
        type: "GET",
        url: "InfoServlet",
        dataType:"json",
        success: function(data)
        {


        $.each(data, function(i,data)
        {
            var msg_data= "<div id='msgdiv"+data.Msg+"'>"+data.IdInfo+" and "+data.Msg+"</div>";

            $(msg_data).appendTo("#content");
            $('#thediv').prepend('<img id="theImg" src='+data.Picture+' />');


        });

        }
        });


        return false;
        });

    </script>

</head>
<body>


<div id='content'></div>
<div id='thediv'></div>

</body>
</html>

servlet:

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


public InfoServlet() 
{
    super();

}

protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException
{
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    try
    {   
    Gson gson = new Gson();

    InfoService is = new InfoService();
    Info info = new Info();

    int idinfo = 2;
    info = is.queryById(idinfo);
    String gout= gson.toJson(info);
    System.out.println("{\"Messages\":"+gout+"}");
    out.println("{\"Messages\":"+gout+"}");
    //System.out.println(gout);
    }
    catch (Exception ex)
    {
        System.out.println("Error: "+ ex.getMessage());
    }
    finally
    {
        System.out.close();
    }
}

}

信息对象:

package net.test.service;

import java.io.InputStream;

public class Info
{
private int IdInfo;
private String Msg;
private InputStream Picture;


public int getIdInfo() {
    return IdInfo;
}
public void setIdInfo(int idInfo) {
    IdInfo = idInfo;
}
public InputStream getPicture() {
    return Picture;
}
public void setPicture(InputStream picture) {
    Picture = picture;
}
public String getMsg() {
    return Msg;
}
public void setMsg(String msg) {
    Msg = msg;
}

}

1 个答案:

答案 0 :(得分:0)

我有树观察,首先在类Info中,Picture成员必须是byte []数组,你不能使用流,第二个在servlet中返回json响应时内容类型是response.setContentType(“应用/ JSON“);. 第三个也是最重要的img标签中的属性src仅支持图像文件的URL,它不能接收图像的字节。

我建议你从数据库中读取图像,创建一个临时图像文件并发送要在img标签中使用的url。

在混合移动应用程序中,我使用javascript渲染图像,但这是一个复杂的过程,因为您需要对字节进行编码(base-64)并使用javascript解码并使用库来使用此字节渲染图像。

我希望这会对你有所帮助。