使用入门:传送静态内容

了解如何安全地从 Google App Engine 标准环境中传送静态内容,例如 HTML 文件、CSS 和图片。

准备工作

  1. 配置开发环境并创建 App Engine 项目

  2. 如果您的网站使用的是自定义域名,请按照相关说明为您的项目添加自定义网域

传送网页

App Engine 可以传送静态内容,例如 HTML 页面和图片等媒体。 静态内容是指不会作为 JSP 或 Servlet 执行的任何内容。

以下示例为一个基本 HTML 页面,显示了一条欢迎消息。

<!DOCTYPE html>
<html>
  <head>
    <title>The App Engine Blog</title>
  </head>
  <body>
    <h1>Welcome to the App Engine Blog</h1>
    <p>This is being served by App Engine!</p>
  </body>
</html>

放置静态文件的位置

您必须将已传送的静态文件放置在应用的 webapp 目录中。您可以使用文件夹,但请注意,所有文件路径和 URI 都与 webapp 目录相关。

选择静态文件的位置后,您必须使用 <static-files> 元素在 appengine-web.xml 文件中定义该位置。

在以下示例中,基本 appengine-web.xml 配置将 webapp 目录中的所有 HTML 文件均视作静态文件。

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <threadsafe>true</threadsafe>
  <runtime>java8</runtime>
  <static-files>
    <include path="/**.html" >
    </include>
  </static-files>
</appengine-web-app>

您可以包含多个 <include path> 元素,以引用不同目录和不同文件类型。以下示例是对上述示例的扩展:

<static-files>
  <include path="/**.html" >
  </include>
  <include path="/images/**.jpg" >
  </include>
</static-files>

现在,webapp/images/ 目录中带有 .jpg 扩展名的所有文件都将被视作静态文件。

在上面的示例中,如果要显示 webapp/images 目录中的 logo.jpg<img> 标记将具有来源 URI <img src="/images/logo.jpg">

为所有静态内容强制使用 HTTPS

App Engine 支持通过 HTTP 或 HTTPS 传送内容,建议您使用 HTTPS。要设置安全网址,您必须在项目的 web.xml 中添加 <security-constraint> 元素。示例 <security-constraint> 如下所示:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>blog</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

通过 <transport-guarantee>CONFIDENTIAL</transport-guarantee>,所有请求都会自动重定向至静态内容的 HTTPS URI。

部署到 App Engine

您可以使用 Maven 将应用部署到 App Engine。

转到项目的根目录并输入以下命令:

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

PROJECT_ID 替换为您的 Cloud 项目 ID。如果您的 pom.xml 文件已经指定了您的项目 ID,则您无需在运行的命令中添加 -Dapp.deploy.projectId 属性。

Maven 完成应用部署后,输入以下命令可在新应用中自动打开网络浏览器标签:

gcloud app browse

后续步骤

静态文件可用于通过 App Engine 传送图片、层叠样式表和静态 HTML 内容。如需了解更多信息,请参阅通过 HTML 表单处理用户数据