Избранное | Русский | Войти

Создание проекта

Приложения Java App Engine используют стандарт сервлетов Java для взаимодействия со средой веб-сервера. Файлы приложения, включая скомпилированные классы, JAR, статические файлы и файлы конфигурации упорядочены в структуре, используя стандартный макет WAR для веб-приложений Java. Можно использовать любой процесс разработки для создания веб-сервлетов и каталога WAR. (Архивные файлы WAR пока не поддерживаются SDK.)

Каталог проекта

В этом руководстве будет использоваться один каталог 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 Toolkit" и убедитесь, что установлен флажок "Использовать Google App Engine". Дополнительную информацию см. в статье Использование плагина Google для Eclipse. Мастер создает структуру каталога и описанные ниже файлы.

Если Eclipse не используется, создайте описанную выше структуру каталога. При ознакомлении со всеми описанными в данном разделе файлами создавайте файлы с указанными местоположениями и именами.

Также можно скопировать шаблон нового проекта, включенный в SDK, в каталог appengine-java-sdk/demos/new_project_template/.

Класс сервлета

Приложения Java App Engine используют API сервлетов Java для взаимодействия с веб-сервером. Сервлет HTTP – это класс приложения, который может обрабатывать веб-запросы и отвечать на них. Этот класс расширяет класс javax.servlet.GenericServlet или javax.servlet.http.HttpServlet.

Наш проект гостевой книги начинается с одного класса сервлета, простого сервлета, отображающего сообщение.

Если плагин Eclipse не используется, создайте каталоги для пути src/guestbook/, затем создайте описанный ниже файл класса сервлета.

В каталоге 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

Когда веб-сервер получает запрос, он определяет класс сервлета для вызова, используя файл конфигурации, который называется "дескриптором развертывания веб-приложения". Файл называется web.xml и находится в каталоге war/WEB-INF/ в WAR. WEB-INF/ и web.xml являются частями спецификации сервлета.

В каталоге 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 и сопоставляет его с путем URL /guestbook. Он также указывает, что при каждом получении пользователем пути URL, который еще не сопоставлен сервлету и представляет путь к каталогу в WAR приложения, сервер должен выполнить поиска файла index.html в этом каталоге и его обработку, если он найден.

Файл appengine-web.xml

App Engine требуется дополнительный файл конфигурации для определения способа развертывания и запуска приложения. Этот файл называется appengine-web.xml и находится в WEB-INF/ вместе с web.xml. Он включает зарегистрированный идентификатор приложения (Eclipse создает пустой идентификатор, который необходимо заполнить позже), номер версии приложения и список файлов, которые должны считаться статическими файлами (такие как изображения и 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 и не является частью стандарта сервлета. Файлы схемы XML с описанием формата этого файла в SDK находятся в каталоге appengine-java-sdk/docs/. Дополнительную информацию об этом файле см. в статье Настройка приложения.

Запуск проекта

SDK App Engine включает приложение веб-сервера, которое можно использовать для тестирования собственного приложения. Сервер имитирует среду и службы App Engine, включая ограничения тестовой среды, хранилище данных и службы.

При использовании Eclipse можно запустить сервер разработки с отладчиком Eclipse. В меню Выполнение выберите Отладить как > Веб-приложение. (Если этот параметр меню отсутствует, выберите меню Окно > Сброс представления..., нажмите ОК, затем снова откройте меню Выполнение.) Информацию о создании конфигурации отладки см. в статье Использование плагина Google для Eclipse.

Если Eclipse не используется, см. статью Использование Apache Ant для получения сведений о скрипте сборки, с помощью которого можно создать проект и запустить сервер разработки. Для запуска сервера с этим скриптом сборки введите следующую команду: ant runserver Чтобы остановить сервер, нажмите Control-C.

Тестирование приложения

Запустите сервер, затем откройте следующий URL в браузере:

Сервер вызывает сервлет и отображает сообщение в браузере.

Далее...

Теперь у вас есть полноценное приложение App Engine! Вы можете развернуть это простое приветствие и поделиться им с пользователями всего мира.

Это приложение отображает общее приветствие для всех пользователей. Добавим функцию настройки приветствия для каждого посетителя, используя аккаунты Google.

Переходите к разделу Использование службы Users.