My favorites | 中文(简体) | Sign in

创建项目

App Engine Java 应用程序使用 Java Servlet 标准与网络服务器环境交互。应用程序的文件(包括已编译的类、JAR、静态文件和配置文件)使用 Java 网络应用程序的 WAR 标准布局组织在目录结构中。您可以使用任何想用的开发过程来开发网络 Servlet 并生成 WAR 目录。(SDK 目前尚不支持 WAR 档案文件。)

项目目录

对于本教程,我们将对所有项目文件使用一个名为 Guestbook/ 的目录。名为 src/ 的子目录包含 Java 源代码,名为 war/ 的子目录包含以 WAR 格式组织的完整应用程序。我们的生成过程会编译 Java 源文件,并将编译的类放在 war/ 中的适当位置。

完整的项目目录如下:

Guestbook/
  src/
    ...Java source code...
    META-INF/
      ...other configuration...
  war/
    ...JSPs, images, data files...
    WEB-INF/
      ...app configuration...
      lib/
        ...JARs for libraries...
      classes/
        ...compiled classes...

如果使用的是 Eclipse,则通过点击工具栏上的“新建网络应用程序项目”按钮创建一个新的项目:新建网络应用程序项目按钮。 赋予项目 Guestbook 的“项目名称”以及 guestbook 的“包”。取消选中“使用 Google Web 工具包”,并确保选中了“使用 Google App Engine”。有关详细信息,请参阅使用 Eclipse Google 插件。向导将创建目录结构,以及下文说明的文件。

如果您没有使用 Eclipse,则创建上文所述的目录结构。当您阅读本部分中介绍的每个文件时,可以使用给定的位置和名称创建文件。

您还可以在 appengine-java-sdk/demos/new_project_template/ 目录中复制 SDK 内含的新的项目模板。

Servlet 类

App Engine Java 应用程序使用 Java Servlet API 与网络服务器交互。HTTP Servlet 是处理和响应网络请求的应用程序类。该类扩展 javax.servlet.GenericServlet 类或 javax.servlet.http.HttpServlet 类。

我们的留言簿项目从一个 Servlet 类开始,这是一个简单的显示消息的 Servlet。

如果您没有使用 Eclipse 插件,则创建路径为 src/guestbook/ 的目录,然后创建下文介绍的 Servlet 类文件。

src/guestbook/ 目录中,名为 GuestbookServlet.java 的文件具有以下内容:

package guestbook;

import java.io.IOException;
import javax.servlet.http.*;

public class GuestbookServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}

web.xml 文件

当网络服务器收到请求时,其使用一个称为“网络应用程序部署描述符”的配置文件决定调用哪个 Servlet 类。此文件名为 web.xml,位于 WAR 中的 war/WEB-INF/ 目录中。WEB-INF/web.xml 是 Servlet 规范的一部分。

war/WEB-INF/ 目录中,名为 web.xml 的文件具有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
    <servlet>
        <servlet-name>guestbook</servlet-name>
        <servlet-class>guestbook.GuestbookServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>guestbook</servlet-name>
        <url-pattern>/guestbook</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

web.xml 文件声明名为 guestbook 的 Servlet,并将其映射到 URL 路径 /guestbook。其还称,每当用户抓取一个没有映射到 Servlet 并表示应用程序的 WAR 内的目录路径的网址路径时,服务器应检查该目录中是否存在名为 index.html 的文件,如果发现存在该文件则提供该文件。

appengine-web.xml 文件

App Engine 需要一个额外的配置文件,以指出如何部署和运行应用程序。此文件名为 appengine-web.xml,并和 web.xml 一起位于 WEB-INF/ 中。其包括您的应用程序的注册 ID(Eclipse 创建时 ID 留空,以便您以后填写)、应用程序的版本号以及应作为静态文件(例如图像和 CSS)以及资源文件(例如 JSP 和其他应用程序数据)处理的文件列表。

war/WEB-INF/ 目录中,名为 appengine-web.xml 的文件具有以下内容:

<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    <application></application>
    <version>1</version>
</appengine-web-app>

appengine-web.xml 专用于 App Engine,且不是 Servlet 标准的一部分。您可以在 SDK 中的 appengine-java-sdk/docs/ 目录中找到描述此文件的格式的 XML 架构文件。有关此文件的详细信息,请参阅配置应用程序

运行项目

App Engine SDK 包括一个您可用来测试您的应用程序的网络服务器应用程序。服务器模拟 App Engine 环境和服务,其中包括沙盒限制、数据存储区和服务。

如果您正在使用 Eclipse,则您可以在 Eclipse 调试器中启动开发服务器。在运行菜单中,选择调试方式 > 网络应用程序。(如果您没有看到此菜单选项,则选择窗口菜单 > 重置视景...,点击确定,然后再次尝试运行菜单。)有关创建调试配置的详细信息,请参阅使用 Eclipse Google 插件

如果没有使用 Eclipse,请参阅使用 Apache Ant 以获取可生成项目并启动开发服务器的生成脚本。要以此生成脚本启动服务器,请输入下列命令:ant runserver。要停止服务器,请按 Control-C。

测试应用程序

启动服务器,然后在您的浏览器中访问以下网址:

服务器调用 Servlet,并在浏览器中显示消息。

下一步...

您现在完成了 App Engine 应用程序!您可以立即部署该简单的问候并与全球用户共享。

此应用程序向所有用户显示一条通用问候。让我们添加功能以自定义针对每位使用 Google 帐户的访问者的问候。

继续转至使用用户服务