GWT对象化:基本

GWT对象化:基本,gwt,objectify,Gwt,Objectify,我已经阅读了一些文档,但还无法与数据存储进行通信…有人能给我一个GWT web app中使用的objectify的示例项目/代码吗(我使用eclipse)…只需使用RPC执行一个简单的“put”和“get”操作即可…或者,至少告诉我它是如何完成的理解如何使objectify工作最简单的方法是重复David的Chandler博客中描述的所有步骤。如果您对GWT、GAE(Java)、GWT presenter、gin\guice等感兴趣,那么整个博客都是您必须阅读的内容。在这里您可以找到工作示例,但

我已经阅读了一些文档,但还无法与数据存储进行通信…有人能给我一个GWT web app中使用的objectify的示例项目/代码吗(我使用eclipse)…只需使用RPC执行一个简单的“put”和“get”操作即可…或者,至少告诉我它是如何完成的

理解如何使objectify工作最简单的方法是重复David的Chandler博客中描述的所有步骤。如果您对GWT、GAE(Java)、GWT presenter、gin\guice等感兴趣,那么整个博客都是您必须阅读的内容。在这里您可以找到工作示例,但无论如何,这里我将展示一个非常高级的示例

在包
shared
中定义实体/模型:

import javax.persistence.Embedded;
import javax.persistence.Id;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Unindexed;

@Entity
public class MyEntry implements IsSerializable {
    // Objectify auto-generates Long IDs just like JDO / JPA
    @Id private Long id;
    @Unindexed private String text = "";
    @Embedded private Time start;

    // empty constructor for serialization
    public MyEntry () {
    }
    public MyEntry (Time start, String text) {
        super();
        this.text = tText;
        this.start = start;
    }
    /*constructors,getters,setters...*/
}
时间类(也是
shared
package)只包含一个字段毫秒:

@Entity  
public class Time implements IsSerializable, Comparable<Time> {
protected int msecs = -1;    
  //rest of code like in MyEntry 
}
最后,我们可以向数据库发出请求(
server
package):

public类FinallyDownloadingEntriesServlet扩展了HttpServlet{
受保护的void doPost(HttpServletRequest-req、HttpServletResponse-resp)抛出
ServletException,IOException{
分别为setCharacterEncoding(“UTF-8”);
分别为setContentType(“文本/普通”);
//更多代码。。。
resp.setHeader(“内容处置”、“附件;文件名=\”+“MyFileName”+“.txt\”;”);
试一试{
MyEntryDao=新的MyEntryDao();
/*查询以获取数据存储中按开始时间排序的所有Myentry*/
ArrayList条目=(ArrayList)dao.ofy().query(MyEntry.class).order(“start.msecs”).list();
PrintWriter out=resp.getWriter();
int i=0;
对于(MyEntry条目:条目){
++一,;
out.println(i);
out.println(entry.getStart()+entry.getText());
out.println();
}
}最后{
//捕获异常
}
}

GWT Objectify文档非常全面,应该可以帮助您快速入门。您的问题是与Objectify相关还是与基本GWT客户机服务器RPC正确相关?是的……但是我发现这个错误myproject/servlet即使在对xml、java和alI进行了所有更改之后也没有找到。我对GWT很陌生,而且我一直都有一些东西需要解决添加新依赖项时,往往会忘记/很难找到:gwt.xml的正确继承行。对于Objectify:
package com.myapp.server.dao;

import java.util.logging.Logger;

import com.googlecode.objectify.ObjectifyService;
import com.myapp.shared.MyEntryDao;

public class MyEntryDao extends ObjectifyDao<MyEntry>
{
    private static final Logger LOG = Logger.getLogger(MyEntryDao.class.getName());

    static
    {
        ObjectifyService.register(MyEntry.class);
    }

    public MyEntryDao()
    {
        super(MyEntry.class);
    }

}
public class FinallyDownloadingEntriesServlet extends HttpServlet {
      protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException, IOException {
        resp.setCharacterEncoding("UTF-8");
        resp.setContentType("text/plain");
                //more code...
                resp.setHeader("Content-Disposition", "attachment; filename=\""+"MyFileName"+".txt\";");
        try {
            MyEntryDao = new MyEntryDao();
          /*query to get all MyEntries from datastore sorted by start Time*/
            ArrayList<MyEntry> entries = (ArrayList<MyEntry>) dao.ofy().query(MyEntry.class).order("start.msecs").list();

            PrintWriter out = resp.getWriter();
            int i = 0;
            for (MyEntry entry : entries) {
                ++i;
                out.println(i);
                out.println(entry.getStart() + entry.getText());
                out.println();
            }
        } finally {
            //catching exceptions
        }
    }