2010-04-27 4 views
-1

je les objets de classe suivants dans la dadastore de Google App Engine, je peux les voir de la « Datastore Viewer »:Google App Engine comment obtenir un objet de la servlet?

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() { } 
...... 
} 

Comment mes applications java obtenir l'objet d'une URL de servlet? Par exemple, si avoir une instance de Contact_Info_Entry qui est contact_id est "ABC-123", et mon App Id est: nm-java

Lorsque mon programme java accède à l'URL:

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

Comment le servlet Check_Contact_Info obtenir l'objet de banque de données et le renvoyer à mon application?

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

Désolé, je dois être plus précis, comment envoyer l'objet dans la réponse?

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" ??? 


    } 

Frank

Répondre

0

Depuis contact_id n'est pas la clé primaire, vous devez créer un query:

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

Si vous pouvez utiliser la valeur Id Long (qui est la clé primaire) au lieu , vous pouvez le charger directement par clé d'entité.

Si vous voulez envoyer l'entité du Servlet à un client Java, vous pouvez utiliser la sérialisation Java (votre classe est sérialisable).

+0

Merci, je besoin de cette partie aussi! – Frank

+0

@BalusC: Oui, je l'ai utilisé OutputStream ou Writer avant dans mes autres programmes, mais je les envoyais beck chaînes html, pas une instance d'un objet, dans ce cas, comment peut « PrintWriter out = response.getWriter() " renvoyer "Contact_Info_Entry My_Contact_Entry"? C'est là que je me suis coincé. – Frank

+0

@Frank: regardez ObjectOutputStream – Thilo