Scopri come creare un modulo HTML che utilizzi il metodo HTTP POST
per inviare
i dati forniti dall'utente a un servlet Java in esecuzione su App Engine.
Prima di iniziare
Configura l'ambiente di sviluppo e crea il progetto App Engine.
Creazione di un modulo
Crea un modulo HTML utilizzando JavaServer Pages (JSP).
Il seguente codice JSP genera un modulo per creare un post del blog. Richiede tre campi di immissione di testo, title
, author
e content
, e un pulsante Save
che invia i dati 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>
Questo modulo invia i dati del modulo all'handler 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 la creazione dell'handler del modulo.
Gestione dei dati del modulo
Una volta che l'utente invia i dati del modulo, questi vengono gestiti da un gestore dei moduli. Nel
snippet riportato di seguito, l'handler del modulo è un servlet denominato 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.");
}
}
Tieni presente l'annotazione @WebServlet(name = "createBlogPost", value="/create")
,
che mappa il servlet all'URI in cui gestisce le richieste: /create
. Per gli sviluppatori che conoscono il runtime Java 7 di App Engine, questa annotazione sostituisce le mappature effettuate in precedenza 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à il tuo ID progetto, non devi includere la proprietà -Dapp.deploy.projectId
nel comando eseguito.
Dopo che Maven ha eseguito il deployment dell'app, apri automaticamente una scheda del browser web per la nuova app digitando:
gcloud app browse
Passaggi successivi
Come estensione della gestione dei dati utente, ti consigliamo di utilizzare Cloud SQL, Cloud Datastore o Cloud Storage per archiviare i dati: