【问题标题】:How to get thespecific entity from google app engine datastore according to the specific button click如何根据特定按钮单击从谷歌应用引擎数据存储中获取特定实体
【发布时间】:2014-01-03 10:53:55
【问题描述】:

我的 Jsp 文件是这样的。它有 2 个按钮。当我点击第一个按钮时,应该选择数据存储中的第一个实体,并且与第二个按钮相同。

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3.org/TR/html4/loose.dtd"> 
 <html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Insert title here</title>
 </head>
 <body>
    <body style="background-color:black;">


 <p>
  <p><input type="button" name="first" value="0C F0 0400" style="background-     
 color:#006600; color:#FFFFFF ; height:100px; width:200px"    
 onclick="location.href='hello';"> </p>
<p><input type="button" name="first" value="0D F0 0800" style="background-  
color:#006600; color:#FFFFFF ; height:100px; width:200px" 
 onclick="location.href='hello';">
</p>

</body>
</html>

这是小服务程序。如何在第一个按钮单击时获取第一个实体,在第二个按钮单击时获取第二个实体。

package pack.exp;
import java.io.IOException;
import javax.servlet.http.*;

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.EntityNotFoundException;
 import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;


@SuppressWarnings("serial")
public class HelloServlet extends HttpServlet 
{
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws   
    IOException 
{
    Key k1 = KeyFactory.createKey("Employee","E1");    
    Key k2 = KeyFactory.createKey("Employee","E2");        

    String firstName1 = "Sam";
    String lastName1 = "Well";

    String firstName2 = "John";
    String lastName2 = "Morgan";


    Entity bs1 = new Entity(k1);
    Entity dm1 = new Entity(k2);

    bs1.setProperty("FN", firstName1);     
    bs1.setProperty("LN", lastName1); 

    dm1.setProperty("FN", firstName2);     
    dm1.setProperty("LN", lastName2);

    DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    datastore.put(bs1);
    datastore.put(dm1);

    Entity bs2 = null;
    Entity dm2 = null;

    try 
    {
        bs2= datastore.get(k1);
        dm2= datastore.get(k2);
    }

    catch (EntityNotFoundException e) 
    {
        e.printStackTrace();
    }

    String fName1= (String) bs2.getProperty("FN");
    String lName1= (String) bs2.getProperty("LN");

    String fName2= (String) dm2.getProperty("FN");
    String lName2= (String) dm2.getProperty("LN");

    resp.setContentType("text/plain");
    resp.getWriter().println("Person1 Details------> " + fName1 + "  " + lName1);   

    resp.getWriter().println("Person2 Details------> " + fName2 + "  " + lName2);   

}
}

【问题讨论】:

    标签: java google-app-engine jsp servlets bigtable


    【解决方案1】:

    首先,您需要使用 servlet 的 doGet() 方法将值存储到数据存储中。

    您可以使用以下代码做到这一点:

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws   
    IOException 
    {
       Entity employee1=new Entity("Employee","Employee1");  
       Entity employee2=new Entity("Employee","Employee2");
       employee1.setProperty("FN", "Sam");     
       employee1.setProperty("LN", "Sam"); 
       employee2.setProperty("FN", "John");     
       employee2.setProperty("LN", "Morgan");   
      DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
    try{
           datastore.put(employee1);
          datastore.put(employee2);
       }
       catch(DatastoreFailureException d){
            d.printStackTrace();
        }
    }
    

    然后在 doPost 方法中获取点击按钮的值。 JSP 代码我已经在你的另一个问题中回答了。

    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws   
    IOException 
    {
    String key=req.getParameter("good");
    Key key = KeyFactory.createKey("Employee", key);
    Entity employee=datastore.get(key);
    resp.setContentType("text/plain");
    resp.getWriter().println("Person Details------> " + employee.getProperty("FN")+ "  " +employee.getProperty("LN"));
    }
    

    【讨论】:

    • 你能解释一下 Util.persistEntity(employee1);
    • 请更改。 Util.persistEntity() 到数据存储对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多