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
因此,假设您部署了两个应用程序引擎应用程序,AppA
和B
。现在,如果我正确理解了你的问题,你想从appB
中访问appA
的数据存储吗?如果是这样的话,恐怕你不能在本地做到这一点
正如您在类似问题中看到的,每个应用程序都有自己的数据存储,不能在其他(单独的)应用程序引擎应用程序之间本地共享
话虽如此,在单独的servlet之间共享数据的一种方法是在数据存储之上构建一个API。因此,在您的例子中,servletA
可以通过接口公开getter和setter函数,servletB
可以对数据执行任何需要执行的操作
注意,在这个场景中,servletB
不一定必须托管在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);
}