我想使用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;
}
}
答案 0 :(得分:0)
我有树观察,首先在类Info中,Picture成员必须是byte []数组,你不能使用流,第二个在servlet中返回json响应时内容类型是response.setContentType(“应用/ JSON“);. 第三个也是最重要的img标签中的属性src仅支持图像文件的URL,它不能接收图像的字节。
我建议你从数据库中读取图像,创建一个临时图像文件并发送要在img标签中使用的url。
在混合移动应用程序中,我使用javascript渲染图像,但这是一个复杂的过程,因为您需要对字节进行编码(base-64)并使用javascript解码并使用库来使用此字节渲染图像。
我希望这会对你有所帮助。