了解如何创建 HTML 表单,该表单使用 HTTP POST
方法将用户提供的数据提交到 App Engine 上运行的 Java Servlet。
准备工作
创建表单
使用 JavaServer Pages (JSP) 创建 HTML 表单。
以下 JSP 代码可以生成用于创建博文的表单。该表单有三个文本输入字段,title
、author
和 content
,还有可用于将数据提交给 Servlet 的 Save
按钮,
<%@ 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>
此表单会将表单数据发送到位于 /create
网址的处理程序。您应该使用 JSP 的 escapeXml
功能为跨站点脚本 (XSS) 攻击计数,如代码段所示。创建表单处理程序的说明见下文。
处理表单数据
用户提交表单数据后,这些数据将交由表单处理程序处理。在如下代码段中,表单处理程序是一个名为 createBlogPost
的 Servlet:
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.");
}
}
请注意 @WebServlet(name = "createBlogPost", value="/create")
注释,该注释可将 Servlet 映射到处理请求的 URI:/create
。对于熟悉 App Engine Java 7 运行时的开发人员,该注释将替代先前在 web.xml
文件中确定的映射关系。
部署到 App Engine
您可以使用 Maven 将应用部署到 App Engine。
转到项目的根目录并输入以下命令:
mvn package appengine:deploy -Dapp.deploy.projectId=PROJECT_ID
将 PROJECT_ID 替换为您的 Google Cloud 项目的 ID。 如果您的 pom.xml
文件已经指定了您的项目 ID,则您无需在运行的命令中添加 -Dapp.deploy.projectId
属性。
Maven 完成应用部署后,输入以下命令可在新应用中自动打开网络浏览器标签:
gcloud app browse
后续步骤
作为处理用户数据的扩展,您可能希望使用 Cloud SQL、Cloud Datastore 或 Cloud Storage 来存储数据: