Primeros pasos: gestionar datos de formularios

Aprende a crear un formulario HTML que use el método HTTP POST para enviar datos proporcionados por el usuario a un servlet de Java que se ejecute en App Engine.

Antes de empezar

Configura tu entorno de desarrollo y crea tu proyecto de App Engine.

Crear un formulario

Crea un formulario HTML con JavaServer Pages (JSP).

El siguiente código JSP genera un formulario para crear una entrada de blog. Tiene tres campos de entrada de texto, title, author y content, y un botón Save que envía los datos al 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 formulario envía los datos del formulario al controlador de la URL /create. Deberías usar la función escapeXml de JSP para evitar ataques de secuencias de comandos entre sitios (XSS), como se muestra en el fragmento de código. A continuación, se muestran las instrucciones para crear el controlador del formulario.

Gestionar datos de formularios

Una vez que el usuario envía los datos del formulario, los gestiona un controlador de formularios. En el fragmento de código siguiente, el controlador del formulario es un servlet llamado 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.");
  }
}

Fíjate en la anotación @WebServlet(name = "createBlogPost", value="/create"), que asigna el servlet al URI en el que gestiona las solicitudes: /create. Para los desarrolladores que estén familiarizados con el entorno de ejecución de Java 7 de App Engine, esta anotación sustituye a las asignaciones que se hacían anteriormente en el archivo web.xml.

Desplegar en App Engine

Puedes desplegar tu aplicación en App Engine con Maven.

Ve al directorio raíz de tu proyecto y escribe lo siguiente:

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

Sustituye PROJECT_ID por el ID de tu Google Cloud proyecto. Si tu archivo pom.xml ya especifica tu ID de proyecto, no es necesario que incluyas la propiedad -Dapp.deploy.projectId en el comando que ejecutes.

Una vez que Maven haya desplegado tu aplicación, se abrirá automáticamente una pestaña del navegador web con tu nueva aplicación. Para ello, escribe lo siguiente:

gcloud app browse

Siguientes pasos

Como extensión del tratamiento de los datos de los usuarios, puede que quieras usar Cloud SQL, Cloud Datastore o Cloud Storage para almacenar los datos: