Olá, Mundo!

Ao aprender novas tecnologias, o primeiro programa que desenvolvemos é um "Olá Mundo". O propósito deste programa é validar a instalação de todas as ferramentas de nosso ambiente de trabalho, garantindo que está tudo funcionando corretamente.

Iniciando um novo projeto

O Google App Engine já possui arquétipos para começarmos. Os arquétipos são templates de projetos publicados nos repositórios do Maven.

Para isso, vamos executar o seguinte comando (quebras de linha foram inseridas para facilitar a leitura):

mvn archetype:generate -Dappengine-version=1.9.17 \
    -Dapplication-id=appengine-ola-mundo \
    -Dfilter=com.google.appengine.archetype:

Se for a primeira vez que você executa o maven, ele fará o download de vários arquivos e irá mantê-los em cache para novas execuções.

O Maven vai então listar os arquétipos encontrados com o filtro do Google App Engine. Utilize o número correspondente ao template com.google.appengine.archetypes:appengine-skeleton-archetype. Este template configura a estrutura de diretórios necessária, bem como os arquivos obrigatórios para o seu projeto.

Quando for pergutando sobre a versão do template, utilize o número correspondente à versão mais recente.

Em seguida, siga as etapas do prompt respondendo às perguntas:

  • groupId: br.com.orangeinstitute
  • artifactId: ola-mundo
  • version: 1.0-SNAPSHOT
  • package: br.com.orangeinstitute

Depois de preencher a todas as perguntas, pressione a tecla ENTER para confirmar e criar o projeto.

Um novo diretório chamado ola-mundo vai ser criado pelo maven, contendo a seguinte estrutura:

ola-mundo/
|-- eclipse-launch-profiles/
|   |-- DevAppServerLaunch.launch
|   |-- UpdateApplication.launch
|-- nbactions.xml
|-- pom.xml
|-- README.md
|-- src/
    |-- main/
    |   |-- java/
    |   |-- webapp/
    |       |-- WEB-INF/
    |           |-- appengine-web.xml
    |           |-- logging.properties
    |           |-- web.xml
    |-- test/

Nesta estrutura, o Maven espera que:

  • src/main/java contenha seu código Java
  • src/main/webapp contenha os assets e páginas JSP

Escrevendo o OlaMundoServlet.java

Vamos agora começar com o primeiro Servlet. Ao desenvolvermos uma aplicação Java para a Web, as requisições são processadas por Servlets, que são classes de código Java que produzem uma resposta para uma requisição HTTP.

Utilizando a sua IDE, crie um novo arquivo dentro da pasta src/main/java/br/com/orangeinstitute/, com o nome OlaMundoServlet.java, e o seguinte conteúdo:

package br.com.orangeinstitute;

import java.io.*;

import javax.servlet.*;
import javax.servlet.http.*;

public class OlaMundoServlet extends HttpServlet {

    private static final long serialVersionUID = 1l;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
        resp.getWriter().println("Olá, mundo!");
    }
}
  • Dica: utilize o comando mkdir -p src/main/java/br/com/orangeinstitute para inicializar todos os diretórios de uma única vez.

Agora, vamos mapear este servlet para ser acessado em nossa aplicação. Fazemos isso editando o arquivo web.xml que está na pasta src/main/webapp, e incluindo as seguintes linhas:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>ola</servlet-name>
        <servlet-class>br.com.orangeinstitute.OlaMundoServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>ola</servlet-name>
        <url-pattern>/ola</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>ola</welcome-file>
    </welcome-file-list>
</web-app>

Iniciando o servidor de desenvolvimento

A SDK do Google App Engine possui um servidor para desenvolvimento, que pode ser utilizado para a emulação do ambiente de produção. Para iniciar o servidor de desenvolvimento, vamos utilizar novamente o Maven:

mvn appengine:devserver -Dappengine.address=0.0.0.0

Neste ponto, pode ser que o Maven faça o download de mais arquivos para complementar os plugins e demais recursos. Quando o servidor estiver iniciado você poderá visualizar uma mensagem no prompt indicando a porta na qual o servidor está executando (8080).

Para acessar o seu aplicativo localmente, navegue até o endereço http://localhost:8080/. Você deverá visualizar a mensagem Olá, mundo! em seu navegador.