Primeiros passos: como processar dados de formulário

Saiba como criar um formulário HTML que usa o método HTTP POST para enviar dados fornecidos pelo usuário para um Servlet Java em execução no App Engine.

Antes de começar

Configure o ambiente de desenvolvimento e crie seu projeto do App Engine.

Como criar um formulário

Para criar um formulário HTML, use JavaServer Pages (JSP).

O código JSP a seguir gera um formulário para criar uma postagem do blog. Ele usa três campos de entrada de texto, title, author e content, e tem um botão Save que envia os dados para o servlet:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<div class="container">
  <h2>
    Create a new blog post
  </h2>

  <form method="POST" action="/create">

    <div>
      <label for="title">Title</label>
      <input type="text" name="title" id="title" size="40" value="${fn:escapeXml(blog.title)}" class="form-control" />
    </div>

    <div>
      <label for="author">Author</label>
      <input type="text" name="author" id="author" size="40" value="${fn:escapeXml(blog.author)}" class="form-control" />
    </div>

    <div>
      <label for="description">Post content</label>
      <textarea name="description" id="description" rows="10" cols="50" class="form-control">${fn:escapeXml(blog.content)}</textarea>
    </div>

    <button type="submit">Save</button>
  </form>
</div>

Este formulário envia os dados do formulário para o gerenciador no URL /create. Use a funcionalidade escapeXml do JSP para combater ataques de scripting em vários locais (XSS, na sigla em inglês), conforme mostrado no snippet de código. As instruções para criar o gerenciador do formulário são mostradas a seguir.

Como processar dados de formulário

Depois que o usuário envia os dados do formulário, eles são processados por um gerenciador de formulários. No snippet abaixo, o gerenciador é um servlet chamado createBlogPost:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@SuppressWarnings("serial")
@WebServlet(name = "createBlogPost", value="/create")
public class createBlogPost extends HttpServlet {

  @Override
  public void doPost(HttpServletRequest req, HttpServletResponse resp)
      throws ServletException, IOException {

    PrintWriter out = resp.getWriter();

    out.println(
        "Article with the title: " + req.getParameter("title") + " by "
            + req.getParameter("author") + " and the content: "
            + req.getParameter("description") + " added.");
  }
}

Observe a anotação @WebServlet(name = "createBlogPost", value="/create"), que mapeia o servlet para o URI em que ele processa as solicitações: /create. Para desenvolvedores familiarizados com o ambiente de execução do Java 7 do App Engine, essa anotação substitui os mapeamentos feitos anteriormente no arquivo web.xml.

Como implantar no App Engine

Implante o app no App Engine usando o Maven.

Acesse o diretório raiz do projeto e digite:

mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID

Substitua PROJECT_ID pelo ID do projeto do Google Cloud. Se o arquivo pom.xmlespecificar o ID do projeto, não será necessário incluir a propriedade -Dapp.deploy.projectId no comando executado.

Depois que o Maven implantar o aplicativo, digite o comando a seguir para abrir uma guia do navegador da Web automaticamente em seu novo aplicativo:

gcloud app browse

Próximas etapas

Como uma extensão do processamento de dados de usuários, você pode usar o Cloud SQL, Cloud Datastore ou Cloud Storage para armazenar os dados: