Json 为什么可以';我在谷歌应用程序引擎中检索图像吗?

Json 为什么可以';我在谷歌应用程序引擎中检索图像吗?,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.*" %> <%

我正在学习如何用Java和Google应用程序引擎编写代码。我想检索一些我上传到谷歌应用程序数据库的图像并显示它们。我的代码可以编译,但图像不会显示在浏览器中。我只看到一个小正方形

我怀疑这个bug以前存在于viewimage.jsp文件中。有人能看看我的一些jsp文件并给我一些建议吗?非常感谢你的帮助。谢谢你

viewimage.jsp

<%@ 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。。。。。