开始您的第一个Google App Engine应用
目前,GAE 每个帐号可以开通10个应用,每个应用免费配额1G磁盘空间,这样下来就是10G。另外,每个应用每天免费流量配额10G,Request 一百三十万次,数据库存储调用一千万次。
超出这些配额您可以购买,存储空间0.01美元2G(这个不按天算),带宽基本上0.1美元10G左右/每天(这个每天统计一次,超出免费配额部分才收费)。
唯一遗憾的是暂时不受理人民币。
GAE最早支持 Python ,前一阵又开通了 Java 支持,并提供了一套 SDK。但是由于 GAE 是新生事物,不是很成熟,部署起来挺麻烦,如果没有一个好的 IDE 支持,玩起来很困难。目前官方提供了 Eclipse 插件,您可以使用。由于个人爱好 Netbeans ,本文以 Netbeans 为主要 IDE,如果您是 Eclipse 用户,原理上也是相同的。下面我们开始吧。
0、本文假设你的 JDK 、Netbeans 已经正确安装并配置好相关环境变量。
备注:本文最后提供了项目模板,您可以跳过中间部分,直接使用。
1、首先先你得有个 Google 帐号,如果您使用 Python ,直接就可以部署了。如果您使用 Java,需要到这里激活 App Engine Java 帐户,点击 sign up ,发出请求。可能要等几天才能收到激活邮件。如图:
2、到这里下载App Engine Java SDK ,我然后将它解压到 E:\appenginesdk,后面的配置将以这个路径为参照,您可以更改为自己的路径。如图:
3、在 Netbeans 中新建一个 Java Web 项目,取名 Hello ,我将它保存在 E:\gae\java 目录下,如图:
4、到App Engine Java SDK 的 E:\appenginesdk\demo\guest\war\WEB-INF 文件夹中复制appengine-web.xml、logging.properties 两个文件,然后在 Netbeans 中将这两个文件粘帖到 Web\WEB-INF 目录下,这一步很重要。如图:
5、同样到 App Engine Java SDK 的 E:\appenginesdk\demos\guestbook\war\WEB-INF\classes 下复制 META-INF 文件夹 ,然后粘帖到 Netbeans 中的 “源包” 文件夹下,这一步很重要。如图:6、将 E:\appenginesdk\lib\impl\appengine-api.jar 文件添加到项目的“库”中,目前我们只需要着一个包,以后如果加入数据库可能还需要别的包。这一步很重要。如图:
7、由于 Java Web 项目创建的时候自动生成了一个 index.jsp 文件,所以这时候我们可以在本机测试运行一下:
0) 在 Netbeans 中对项目 “清理并生成”
1)在桌面上建立一个 run.bat 文件,编辑内容为:E:\appenginesdk\bin\dev_appserver.cmd E:\gae\java\Hello\build\web,您可能要根据你自己的情况更改路径。
2)保存 run.bat ,然后双击运行出现如下窗口,服务器开始运行
3)打开浏览器 http://localhost:8080/ ,出现下图,说明一切正常:
8、在 Netbeans 中创建 HelloServlet ,并将 URL 模式改为 /hello,Servlet 代码如下:
response.setContentType("text/html;charset=UTF-8");<br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> PrintWriter out = response.getWriter();<br>try <span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id="Codehighlighter1_112_459_Closed_Text"></span><span id="Codehighlighter1_112_459_Open_Text">{<br>out.println(</span>"");<br>out.println("");<br>out.println(""); <br>out.println("");<br>out.println("");<br>out.println(" <h1><font size="2">你好,Google App Engine</font></h1>");<br>out.println("");<br>out.println("");<br>} finally <span id="Codehighlighter1_469_505_Open_Text">{ <br>out.close();<br>}</span> |
关闭 run.bat 命令行窗口,在 Netbeans 中对项目 “清理并生成”,重新运行 run.bat,然后在浏览器中输入 http://localhost:8080/hello ,可以看见输出。
如何加入静态文件?
9、Netbeans 中在项目的 “Web 页” 文件夹下建立一个 images 文件夹,并将 1.jpg 文件复制到里面,如图:
10、更改 index.jsp 内容如下:
<body><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <a href="/hello">运行 Hello Servleta><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <p/><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <img src="images/1.jpg"><br><body> |
11、打开项目下的 Web 页->WEB-INF->appengine-web.xml 文件,填写内容如下:
<span style="COLOR: #ff00ff"><</span>xml version="1.0" encoding="utf-8"?><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /><appengine-web-app xmlns="http://appengine.google.com/ns/1.0"><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <application>myqiao-appapplication><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <version>1version><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <static-files><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <include path="/**.jpg" /><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <static-files><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <system-properties><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/><br><img src="https://cdn.ancii.com/article/image/v1/l7/qi/bN/Nbq7ilYF1suGxDU6bIGQUwdxVOs4ZQPDpqQLlDZqZBVTkqTqBJ2eSpQaJ9byLOIYK1lC6SG1BFjbieRCz6c64k-lFEszEK3pt5dS1r0HirR5EZ7mZ5z2xrvh0YHDkK2W.gif" title="开始您的第一个Google App Engine应用" alt="开始您的第一个Google App Engine应用" /> <system-properties><br><appengine-web-app> |
12、关闭 run.bat 命令行窗口,在 Netbeans 中对项目 “清理并生成”,重新运行 run.bat,然后在浏览器中输入 http://localhost:8080/,可以看见一个 Servlet 的超链接,另外还显示了一幅图片
这里需要注意的两个地方:
1)myqiao-app 是我的 GAE 帐号,这里您需要改成您的;
2) <include path="/**.jpg" /> 这一句,告诉所有的 jpg 文件都是静态文件,都可以访问
3)关闭 run.bat 命令行窗口,在 Netbeans 中对项目 “清理并生成”,如果一切正常就可以上传了
13、建立一个 upload.bat 文件,内容如下:E:\appenginesdk\bin\appcfg.cmd update E:\gae\java\Hello\build\web,您可能要根据你自己的情况更改路径。
运行它,第一次运行的时候,您需要根据提示输入您的 gmail 帐号和密码,您就可以看见上传进度了:如图:
项目模板
下载模板
这里提供了一个Netbeans项目模板,您可以免去上面的复杂过程,直接使用。
需要自定义的地方:
1、下载模板,用Netbeans打开,重构项目名称。
2、使用JDO,请阅读相关文档。
3、持久化类不能放到默认包中。模板提供了一个测试用的 POJO.java 类中,并放到 my.jdo 包中,您可以根据您自己的情况更改