Começar: processar dados de formulários

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

Antes de começar

Configure o ambiente de programação e crie o projeto do App Engine.

Criar um formulário

Crie um formulário HTML com JavaServer Pages (JSP).

O código JSP seguinte gera um formulário para criar uma publicação no blogue. Tem três campos de introdução de texto: title, author e content, e 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 controlador no URL /create. Deve usar a funcionalidade escapeXml do JSP para contrariar ataques de scripting entre sites (XSS), conforme mostrado no fragmento de código. As instruções para criar o controlador de formulários são apresentadas a seguir.

Tratamento de dados de formulários

Assim que o utilizador envia os dados do formulário, estes são processados por um processador de formulários. No fragmento abaixo, o controlador de formulários é um servlet denominado 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.");   } } 

Tenha em atenção a anotação @WebServlet(name = "createBlogPost", value="/create"), que mapeia o servlet para o URI onde processa pedidos: /create. Para os programadores familiarizados com o tempo de execução do Java 7 do App Engine, esta anotação substitui os mapeamentos que foram feitos anteriormente no ficheiro web.xml.

Implementação no App Engine

Pode implementar a sua app no App Engine através do Maven.

Aceda ao diretório raiz do seu projeto e escreva:

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

Substitua PROJECT_ID pelo ID do seu Google Cloud projeto. Se o seu ficheiro pom.xmlespecificar o seu ID do projeto, não precisa de incluir a propriedade -Dapp.deploy.projectId no comando que executar.

Depois de o Maven implementar a sua app, é aberto automaticamente um separador do navegador de Internet na nova app. Para tal, escreva:

gcloud app browse 

O que se segue?

Como extensão do processamento de dados do utilizador, pode querer usar o Cloud SQL, o Cloud Datastore ou o Cloud Storage para armazenar os dados: