Google App Engine, как получить объект из сервлета? - PullRequest
0 голосов
/ 27 апреля 2010

У меня есть следующие объекты класса в хранилище Google App Engine, я вижу их в «средстве просмотра хранилища данных»:

import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;

@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class Contact_Info_Entry implements Serializable
{
  @PrimaryKey
  @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
  Long Id;
  public static final long serialVersionUID=26362862L;
  String Contact_Id="",First_Name="",Last_Name="",Company_Name="",Branch_Name="",Address_1="",Address_2="",City="",State="",Zip="",Country="";
  double D_1,D_2;
  boolean B_1,B_2;
  Vector<String> A_Vector=new Vector<String>();

  public Contact_Info_Entry() { }
......
}

Как мои java-приложения могут получить объект из URL-адреса сервлета? Например, если у вас есть экземпляр Contact_Info_Entry, у которого Contact_Id равен «ABC-123», а мой идентификатор приложения: nm-java

Когда моя java-программа обращается к URL:

 "http://nm-java.appspot.com/Check_Contact_Info?Contact_Id=ABC-123

Как сервлет Check_Contact_Info получит объект из хранилища данных и вернет его в мое приложение?

public class Check_Contact_Info_Servlet extends HttpServlet
{
  static boolean Debug=true;

  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
  {

  }
...
  protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { doGet(request,response); }
}

Извините, мне нужно быть более конкретным, как отправить объект в ответе?

  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
  {
    PrintWriter out=response.getWriter();

    Contact_Info_Entry My_Contact_Entry;
    ... get My_Contact_Entry from datastore ...

    ??? How to send it out in the "response" ???


  }

Франк

1 Ответ

0 голосов
/ 27 апреля 2010

Поскольку Contact_Id не является первичным ключом, необходимо создать запрос :

Query query = pm.newQuery(Contact_Info_Entry.class);
query.setFilter("Contact_Id == idParam");
query.declareParameters("String idParam");

try {

    List<Contact_Info_Entry> results = (List<Contact_Info_Entry>) 
        query.execute("ABC-123");

    // note that this returns a list, there could be multiple,
    // DataStore does not ensure uniqueness for non-primary key fields

} finally {
    query.closeAll();
}

Если вместо этого вы можете использовать значение Long Id (который является первичным ключом), вы можете загрузить его напрямую по ключу объекта.

Если вы хотите отправить объект из сервлета в клиент Java, вы можете использовать сериализацию Java (ваш класс сериализуем).

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