Guida introduttiva: gestione dei dati dei moduli

Scopri come creare un modulo HTML che utilizza il metodo HTTP POST per inviare i dati forniti dall'utente a una servlet Java in esecuzione su App Engine.

Prima di iniziare

Configura l'ambiente di sviluppo e crea il progetto App Engine.

Creare un modulo

Crea un modulo HTML utilizzando JavaServer Pages (JSP).

Il seguente codice JSP genera un modulo per creare un post del blog. Sono necessari tre campi di input di testo, title, author e content, e un pulsante Save che invia i dati alla 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>

Questo modulo invia i dati del modulo al gestore all'URL /create. Devi utilizzare la funzionalità escapeXml di JSP per contrastare gli attacchi di cross-site scripting (XSS), come mostrato nello snippet di codice. Di seguito sono riportate le istruzioni per creare il gestore del modulo.

Gestione dei dati dei moduli

Una volta che l'utente invia i dati del modulo, questi vengono gestiti da un gestore di moduli. Nello snippet di seguito, il gestore del modulo è una servlet denominata 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.");
  }
}

Prendi nota dell'annotazione @WebServlet(name = "createBlogPost", value="/create"), che mappa la servlet all'URI in cui gestisce le richieste: /create. Per gli sviluppatori che hanno familiarità con il runtime Java 7 di App Engine, questa annotazione sostituisce i mapping precedentemente eseguiti nel file web.xml.

Deployment in App Engine

Puoi eseguire il deployment della tua app in App Engine utilizzando Maven.

Vai alla directory principale del progetto e digita:

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

Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud . Se il tuo file pom.xml specifica già l'ID progetto, non devi includere la proprietà -Dapp.deploy.projectId nel comando che esegui.

Dopo che Maven esegue il deployment dell'app, si apre automaticamente una scheda del browser web nella nuova app digitando:

gcloud app browse

Passaggi successivi

Come estensione della gestione dei dati utente, potresti voler utilizzare Cloud SQL, Cloud Datastore o Cloud Storage per archiviare i dati: