通过Eclipse向导我们成功地使用JavaEE技术在GAE中创建了一个简单的网络应用。
同时,GAE还基于Google的基础架构提供了很多有用服务,我们可以使用SDK附带的编程接口调用这些服务,比如Google用户服务、数据库服务、网页抓取服务等。
下面使用App Engine SDK提供的部分服务来开发一个简单的留言本应用程序(这也是App Engine官方提供的示例程序,笔者稍加修改)。
1.功能设计
(1)需要提供用户登录界面
(2)用户登录后可留言
(3)在留言本上展示最近的10条留言记录
2.使用用户服务提供用户登录界面
Google用户服务提供编程接口供开发人员使用,我们可以使用用户服务获得当前登录的用户。并使用用户服务提供的界面供用户登录,用户登录界面的代码如代码清单4-3所示。
【代码清单4-3】
3.使用JDO存储留言信息
对于大型网络应用来说,通常会将数据存储在可扩展的数据服务器中(比如第3章提到的分布式数据库)。大型网络应用出于对网络带宽方面的考虑,服务器一般会分布在多个机器(可能位于世界各地的不同位置)上以提高用户响应速度,故搭建这样的环境需要更多的资金投入以及较强的基础设施维护能力。而GAE将其Bigtable分布式数据库通过JDO封装的方式为用户提供了较好的数据存储服务。
这里将使用JDO接口来检索和发布由用户留下的消息。
(1)设置AppEngineJDO
对于使用Eclipse开发的用户,Google App Engine工程向导会自动生成JDO配置文件,可以找到src\META-INF\jdoconfig.xml,如代码清单4-4所示。
【代码清单4-4】
在上面的配置文件中,向导生成了一个名为“transactions-optional”的数据库持久化工厂(Persistence Manager Factory)。用户可以使用该工厂创建持久化对象。一般而言,实例化数据库工厂,需要比较长的时间,而对于留言本应用程序只需一个实例,故可将该实例存储在静态变量中,创建一个单独的包装器类,如代码清单4-5所示。
【代码清单4-5】
(2)存储留言(www.xing528.com)
与传统的关系型数据库类似,在存储数据前,首先需要创建数据存储表。JDO简化了此过程,因此只需创建相应的存储对象,JDO会帮用户将数据对象映射到数据库中,如代码清单4-6所示。
【代码清单4-6】
在Greeting类中定义了这个类的3个属性:author,content和date。用@Persistent对这三个私有字段进行批注,指示DataNucleus将这些字段作为对象属性存储在App Engine数据存储区中。
id字段为主码,它是以@Persistent和@PrimaryKey进行批注的长整型字段。AppEn-gine会为用户自动生成唯一的主码。
使用PersistenceManager可以将数据存储到App Engine数据存储区中,如代码清单4-7所示。
【代码清单4-7】
(3)展示最新的10条留言
App Engine支持类似SQL的查询语言GQL。可使用order by语句按时间进行排序,同时可设置返回记录的数量,如代码清单4-8所示。
【代码清单4-8】
(4)本地运行
运行光盘中sample4\GuestBook工程。将看到如图4-18所示的留言本首页面。
图4-18 留言本首页面
单击“输入”按钮,输入用户名(本地运行不需要密码)。用户就可以留言了,如图4-19所示。
图4-19 留言
至此,我们已经利用GAESDK在本地计算机上成功地开发了一个留言本应用程序。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。