Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问和显示数据存储中的数据_Java_Google App Engine - Fatal编程技术网

Java 访问和显示数据存储中的数据

Java 访问和显示数据存储中的数据,java,google-app-engine,Java,Google App Engine,我正在使用以下命令将数据保存到数据存储: Entity pageText = new Entity("pageText"); DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); datastore.put(pageText); 但我不确定如何从另一个servlet访问和显示这些数据。有人能帮忙吗?我保存的是否正确 下面是这个servlet的完整代

我正在使用以下命令将数据保存到数据存储:

    Entity pageText = new Entity("pageText");

    DatastoreService datastore =
            DatastoreServiceFactory.getDatastoreService();
    datastore.put(pageText);
但我不确定如何从另一个servlet访问和显示这些数据。有人能帮忙吗?我保存的是否正确

下面是这个servlet的完整代码,以防您想看一下。谢谢大家!

import java.io.IOException;
import java.util.logging.Logger;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;

@SuppressWarnings("serial")
public class SaveServlet extends HttpServlet
{
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException
    {

        String pageOwner = (String) req.getAttribute("pageOwner");
        String pageName = (String) req.getAttribute("pageName");

        //String pageText = req.getParameter("pageText");

        Entity pageText = new Entity("pageText");

        DatastoreService datastore =
                DatastoreServiceFactory.getDatastoreService();
        datastore.put(pageText);

        Logger.getLogger("bleepbloop").warning("pageText = " + pageText);

        // Save the pageText into the datastore.

        resp.sendRedirect("/wiki/" + pageOwner + "/" + pageName);
    }
}
这个代码应该有效

DatastoreService service = DatastoreServiceFactory.getDatastoreService();  
Query q = new Query("pageText"); 
PreparedQuery pq = service.prepare(q);
PrintWriter out = resp.getWriter();
for (Entity result : pq.asIterable())
{ 
            out.println(result.getProperty("pageOwner") + " " + result.getProperty("pageName"));  
}
我希望有帮助 /迪克·拉森

但我不确定如何访问和显示来自另一方的数据 servlet

因此,假设您部署了两个应用程序引擎应用程序,App
A
B
。现在,如果我正确理解了你的问题,你想从app
B
中访问app
A
的数据存储吗?如果是这样的话,恐怕你不能在本地做到这一点

正如您在类似问题中看到的,每个应用程序都有自己的数据存储,不能在其他(单独的)应用程序引擎应用程序之间本地共享

话虽如此,在单独的servlet之间共享数据的一种方法是在数据存储之上构建一个API。因此,在您的例子中,servlet
A
可以通过接口公开getter和setter函数,servlet
B
可以对数据执行任何需要执行的操作

注意,在这个场景中,servlet
B
不一定必须托管在appengine上,因为所有“数据存储”调用现在都变成了简单的HTTP调用

p.S.如果我完全误解了你的问题,而你实际上问的只是如何从数据存储中检索某些内容,那么:

import com.google.appengine.api.datastore.DatastoreService;
import com.google.appengine.api.datastore.DatastoreServiceFactory;
import com.google.appengine.api.datastore.Entity;
import com.google.appengine.api.datastore.PreparedQuery;
import com.google.appengine.api.datastore.Query;

// ...
// Get the Datastore Service
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();

// The Query interface assembles a query
Query q = new Query("pageText");

// PreparedQuery contains the methods for fetching query results
// from the datastore
PreparedQuery pq = datastore.prepare(q);

for (Entity result : pq.asIterable()) {
  String pageOwner = (String) result.getProperty("pageOwner");
  String pageName = (String) result.getProperty("pageName");
  System.out.println("Page " +pageName+ "'s owner is " +pageOwner);
}