Json 为什么可以';我在谷歌应用程序引擎中检索图像吗?
我正在学习如何用Java和Google应用程序引擎编写代码。我想检索一些我上传到谷歌应用程序数据库的图像并显示它们。我的代码可以编译,但图像不会显示在浏览器中。我只看到一个小正方形 我怀疑这个bug以前存在于viewimage.jsp文件中。有人能看看我的一些jsp文件并给我一些建议吗?非常感谢你的帮助。谢谢你 viewimage.jspJson 为什么可以';我在谷歌应用程序引擎中检索图像吗?,json,google-app-engine,jsp,Json,Google App Engine,Jsp,我正在学习如何用Java和Google应用程序引擎编写代码。我想检索一些我上传到谷歌应用程序数据库的图像并显示它们。我的代码可以编译,但图像不会显示在浏览器中。我只看到一个小正方形 我怀疑这个bug以前存在于viewimage.jsp文件中。有人能看看我的一些jsp文件并给我一些建议吗?非常感谢你的帮助。谢谢你 viewimage.jsp <%@ page import="javax.jdo.*" %> <%@ page import="com.*" %> <%
<%@ page import="javax.jdo.*" %>
<%@ page import="com.*" %>
<%
PersistenceManager pm = PMF.getPMF().getPersistenceManager();
try {
String itemId = request.getParameter("item");
Item item = (Item)pm.getObjectById(Item.class, Long.parseLong(itemId));
byte[] photo = item.getPhoto(item);
response.setContentType("image/jpeg");
response.getOutputStream().write(photo);
} catch (Exception cannotLoad) {
cannotLoad.printStackTrace();
} finally {
pm.close();
}
%>
view.jsp
<!DOCTYPE html>
<html><head>
<title>CS496 Homework 2 - Display Page</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="jquery-1.10.2.min.js"></script>
<script>
var MOBILE = navigator.userAgent.match(
/Android|BlackBerry|iPhone|iPad|iPod|IEMobile/i) ? true : false;
if (MOBILE) {
document.write("<link rel=stylesheet href='http://code.jquery.com/mobile/1.3.2/jquery.mobile-1.3.2.min.css'>");
document.write("<link rel=stylesheet href='stylemobile.css'>");
document.write('<s'+'cript src="jquery.mobile-1.3.2.min.js"></scr'+'ipt>');
} else
document.write("<link rel=stylesheet href='styledesktop.css'>");
</script>
</head><body>
<div data-role="page">
<div data-role="header">
<h1>CS496 Homework 2</h1>
</div>
<div data-role="content" class="photolist">
<ul data-role="listview" data-inset="true" id="allitems"></ul>
</div>
</div>
<div data-role="page" id="detailPage">
<div data-role="header">
<h1 id="detailTitle"></h1>
</div>
<div data-role="content" id="detailContent" class="photoViewer">
<img src="" id="detailImage">
</div>
</div>
<script>
function addItemMobile(itemId, school) {
var anchor = $("<a/>").text(school).attr('href', '#detailPage').click(function() {
$("#detailTitle").text(school);
$("#detailImage").attr('src', '');
$("#detailImage").attr('src', 'viewimage.jsp?item='+itemId);
});
var li = $("<li/>").append(anchor);
$("#allitems").append(li);
}
function addItemDesktop(itemId, school) {
var loc = $("#allitems");
loc.append($("<h2 />").text(school));
loc.append($("<div />").append($("<img />").attr('src', 'viewimage.jsp?item='+itemId)));
}
var addItem = MOBILE ? addItemMobile : addItemDesktop;
$.ajax({
type:"GET",
dataType:"json",
url:"viewapi.jsp",
success:function(items) {
for (var i = 0; i < items.length; i++) {
var item = items[i];
addItem(item.id, item.school);
}
$("#allitems").listview('refresh');
},
error:function(a,b,c) {
alert("ERROR: "+a);
}
});
</script>
</body></html>
CS496作业2-显示页面
var MOBILE=navigator.userAgent.match(
/Android |黑莓| iPhone | iPad | iPod | IEMobile/i)?真:假;
如果(移动){
文件。填写(“”);
文件。填写(“”);
文件。写(“”);
}否则
文件。填写(“”);
CS496家庭作业2
功能addItemMobile(项目ID,学校){
var anchor=$(“”)。text(school.attr('href','#detailPage')。单击(函数(){
$(“#详细标题”)。文本(学校);
$(“#detailImage”).attr('src',”;
$(“#detailImage”).attr('src','viewimage.jsp?item='+itemId);
});
var li=$(“”)追加(锚定);
$(“#allitems”)。追加(li);
}
函数addItemDesktop(项目ID,学校){
var loc=$(“#allitems”);
位置附加($(“”).文本(学校));
loc.append($(“”)。append($(“”)
viewapi.jsp
<%@ page import="java.util.*" %>
<%@ page import="javax.jdo.*" %>
<%@ page import="org.json.simple.*" %>
<%@ page import="cs496hwk2.*" %>
<%
PersistenceManager pm = PMF.getPMF().getPersistenceManager();
try {
List<Item> items = Item.loadItems(null, pm);
JSONArray array = new JSONArray();
for (Item item : items) {
JSONObject object = new JSONObject();
object.put("id", item.getID());
object.put("school", item.getSchool());
array.add(object);
}
out.write(array.toString());
} finally {
pm.close();
}
%>
您是否尝试过使用Chrome调试器或Firebug/Firefox进行调试?您可以检查图像的src URL是否符合预期,并且您可以查看HTTP请求和响应以寻找线索。尝试删除与您的问题完全无关的内容。这将使您和所有用户更容易找到问题。。仅仅粘贴整个东西不是一个很好的做法。而且你将有更多的机会实际解决问题。代码tldr但对于初学者来说,yiu不应该在数据存储中存储图像,原因有很多(比如最大大小).Use blobstore.@ZigMandel:这是一个家庭作业。在数据存储中存储图像是必需的。我尝试了Chrome调试器并看到错误消息:Uncaught TypeError:Object[Object Object Object]没有方法“list view”。加载资源失败:服务器响应状态为500(无法为JSP编译类:JSP文件:/viewimage.JSP中的第9行出现错误。类型项中的方法getPhoto()不适用于参数(项)6。。。。。