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

时间:2012-03-07 05:53:46

标签: java google-app-engine

我使用以下方法将数据保存到数据存储区:

    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);
    }
}

2 个答案:

答案 0 :(得分:1)

  

但我不确定如何从另一个访问和显示数据   的servlet。

因此,我们假设您已部署了两个App Engine应用,即应用AB。现在,如果我正确理解您的问题,您希望从 app A中的访问应用B的数据存储区?如果是这种情况,我担心你不能本地

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

现在已经说过,在单独的servlet之间共享数据的一种方法是在数据存储区之上构建API。因此,在您的情况下,servlet A可以通过REST接口公开getter和setter函数,而servlet B可以执行它对数据所需的任何操作。

请注意,在这种情况下,servlet B不一定必须托管在App Engine上,因为所有“数据存储”调用现在都变成简单的HTTP调用。

PS 如果我完全误解了您的问题,而您实际要问的是如何从数据存储中检索某些内容,here's one example

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);
}

答案 1 :(得分:0)

此代码应该可以使用

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"));  
}

我希望它有所帮助 /迪克拉尔森