Comenzar a manejar datos de formularios

Aprende a crear un formulario HTML que utilice el método HTTP POST para enviar datos proporcionados por el usuario a un Servlet de Java ejecutado en App Engine.

Antes de comenzar

Configura tu entorno de programación y crea tu proyecto de App Engine.

Crear un formulario

Crea a un formulario HTML con JavaServer Pages (JSP).

El siguiente código JSP genera un formulario para crear una entrada de blog. El código toma tres campos de entrada de texto, title, author y content, y tiene 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 en la URL /create. Debe usar la funcionalidad escapeXml de JSP para contrarrestar los ataques de secuencias de comandos entre sitios (XSS), como se muestra en el fragmento de código. Las instrucciones para crear el controlador del código se muestran a continuación.

Manejar datos de formulario

Un controlador de formularios maneja los datos del formulario una vez que el usuario los envía. En el siguiente fragmento, el controlador de 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.");
  }
}

Ten en cuenta la anotación @WebServlet(name = "createBlogPost", value="/create"), que asigna el servlet al URI donde administra las solicitudes: /create. Para los programadores familiarizados con el entorno de ejecución de App Engine Java 7, esta anotación reemplaza las asignaciones que se hicieron anteriormente en el archivo web.xml.

Implementa en App Engine

Puedes implementar 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

Reemplaza PROJECT_ID por el ID de tu proyecto de Cloud. Si tu archivo pom.xml ya especifica tu ID del proyecto, no necesitas incluir la propiedad -Dapp.deploy.projectId en el comando que ejecutas.

Luego de que Maven implemente tu aplicación, escribe lo siguiente para abrir una pestaña del navegador web de forma automática en tu nueva aplicación:

gcloud app browse

Pasos siguientes

Como una extensión del manejo de los datos del usuario, es posible que desees utilizar Cloud SQL, Cloud Datastore o Cloud Storage para almacenar datos: