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 :