Erfahren Sie, wie Sie ein HTML-Formular erstellen, für das die Methode HTTP POST
verwendet wird, um von Nutzern bereitgestellte Daten an ein Java-Servlet zu senden, das auf der App Engine ausgeführt wird.
Vorbereitung
Konfigurieren Sie Ihre Entwicklungsumgebung und erstellen Sie Ihr App Engine-Projekt.
Formular erstellen
Erstellen Sie mit JavaServer Pages (JSP) ein HTML-Formular.
Mit dem folgenden JSP-Code wird ein Formular zum Erstellen eines Blogposts erzeugt. Es enthält drei Texteingabefelder, title
, author
und content
sowie die Schaltfläche Save
mit der die Daten an das Servlet übertragen werden:
<%@ 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>
Mit diesem Formular werden die Formulardaten an den Handler unter der URL /create
gesendet. Sie sollten, wie im Code-Snippet gezeigt, die Funktion escapeXml
von JSP nutzen, um Cross-Site-Scripting-Angriffe (XSS) abzuwehren. Im Folgenden finden Sie eine Anleitung zum Erstellen des Formular-Handlers.
Formulardaten verarbeiten
Sobald der Nutzer die Formulardaten überträgt, werden diese von einem Formular-Handler verarbeitet. Im folgenden Snippet ist der Formular-Handler ein Servlet mit dem Namen 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.");
}
}
Beachten Sie die Annotation @WebServlet(name = "createBlogPost", value="/create")
, mit der das Servlet dem URI zugeordnet wird, an dem die Anfragen verarbeitet werden: /create
. Für Entwickler, die mit der Java 7-Laufzeit von App Engine vertraut sind, ersetzt diese Annotation die Zuordnungen, die früher über die Datei web.xml
erfolgten.
In App Engine bereitstellen
Sie können Ihre Anwendung mithilfe von Maven in App Engine bereitstellen.
Wechseln Sie zum Stammverzeichnis Ihres Projekts und geben Sie Folgendes ein:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts. Wenn in der Datei pom.xml
bereits Ihre Projekt-ID angegeben ist, müssen Sie das Attribut -Dapp.deploy.projectId
nicht in dem von Ihnen ausgeführten Befehl einfügen.
Nachdem Ihre Anwendung von Maven bereitgestellt wurde, sollte automatisch ein Webbrowser-Tab in Ihrer neuen Anwendung geöffnet werden. Geben Sie dazu Folgendes ein:
gcloud app browse
Weitere Informationen
Nachdem die Nutzerdaten verarbeitet wurden, möchten Sie sie vielleicht auch noch mit Cloud SQL, Cloud Datastore oder Cloud Storage speichern: