Доступ и отображение данных из хранилища данных - PullRequest
0 голосов
/ 07 марта 2012

Я сохраняю данные в хранилище данных, используя:

    Entity pageText = new Entity("pageText");

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

Но я не уверен, как получить доступ и отобразить эти данные из другого сервлета.Кто-нибудь может помочь с этим?Я даже сохраняю это правильно?

Вот полный код этого сервлета, на случай, если вы захотите взглянуть.Спасибо!

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 ]

1 голос
/ 07 марта 2012

Но я не уверен, как получить доступ и отобразить эти данные из другого сервлет.

Итак, давайте предположим, что у вас развернуто два приложения App Engine: приложение A и B. Теперь, если я правильно понимаю ваш вопрос, вы хотели бы получить доступ к хранилищу данных приложения A из в app B? Если это так, я боюсь, что вы не можете сделать это изначально .

Как вы видите в этом подобном вопросе, каждое приложение имеет свое собственное хранилище данных, которое изначально не может быть совместно использовано другими (отдельными) приложениями App Engine.

Теперь, сказав, что одним из способов совместного использования данных между отдельными сервлетами было бы создание API поверх хранилища данных. Таким образом, в вашем случае сервлет A может предоставлять функции получения и установки через интерфейс REST , а сервлет B может делать все, что нужно с данными.

Обратите внимание, что в этом сценарии сервлет B необязательно должен размещаться в App Engine, поскольку все вызовы "хранилища данных" теперь становятся простыми вызовами HTTP.

PS Если я полностью неправильно понял ваш вопрос и все, что вы на самом деле спрашивали, это как извлечь что-то из хранилища данных, вот один пример :

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);
}
0 голосов
/ 07 марта 2012

Этот код должен работать

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

Надеюсь, это поможет / Дик Ларссон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...