Premiers pas : Gérer des données de formulaire

Découvrez comment créer un formulaire HTML utilisant la méthode POST HTTP pour envoyer des données fournies par l'utilisateur à un servlet Java exécuté sur App Engine.

Avant de commencer

Configurez votre environnement de développement et créez un projet App Engine.

Créer un formulaire

Créez un formulaire HTML à l'aide des pages JavaServer (JSP).

Le code JSP suivant génère un formulaire permettant de créer un article de blog. Il inclut trois champs de saisie de texte, title, author et content, et dispose d'un bouton Save permettant d'envoyer les données au 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>

Ce formulaire envoie les données du formulaire au gestionnaire à l'URL /create. Vous devez utiliser la fonctionnalité escapeXml de JSP pour contrer les attaques de script intersites (XSS), comme indiqué dans l'extrait de code. Les instructions ci-dessous permettent de créer le gestionnaire de formulaire.

Gérer les données de formulaire

Une fois les données du formulaire envoyées par l'utilisateur, celles-ci sont gérées par un gestionnaire de formulaire. Dans l'extrait de code ci-dessous, le gestionnaire de formulaire est un servlet nommé 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.");
  }
}

Notez l'annotation @WebServlet(name = "createBlogPost", value="/create"), qui mappe le servlet à l'URI où il gère les requêtes : /create. Pour les développeurs familiarisés avec l'environnement d'exécution Java 7 d'App Engine, cette annotation remplace les mappages effectués précédemment dans le fichier web.xml.

Déployer sur App Engine

Vous pouvez déployer votre application sur App Engine à l'aide de Maven.

Accédez au répertoire racine de votre projet, puis saisissez la commande suivante :

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

Remplacez PROJECT_ID par l'ID de votre projet Google Cloud. Si votre ID de projet est déjà inclus dans le fichier pom.xml, vous n'avez pas besoin d'inclure la propriété -Dapp.deploy.projectId dans la commande que vous exécutez.

Lorsque Maven a déployé votre application, saisissez la commande ci-dessous pour ouvrir un onglet de navigateur Web automatiquement dans votre nouvelle application :

gcloud app browse

Étape suivante

En tant qu'extension de la gestion des données utilisateur, vous pouvez utiliser Cloud SQL, Cloud Datastore ou Cloud Storage pour stocker les données :