首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Google App Engine for Java 實戰:構建電子書分享網站

     編輯:Java 相關知識

雲計算與 Google App Engine 簡介

Google App Engine (GAE) 屬於 PaaS 層級,提供 Java 運行環境(Servlet/JSP/JDO/JPA)、郵件、圖像處理、Memcache 等服務,開發者專注業務邏輯,無需維護基礎設施。本文以電子書分享網站為例,示範 GAE/Java 開發全流程。

開發環境搭建

  1. JDK 1.5/1.6 + Eclipse 3.3+
  2. Eclipse 安裝 Google Plugin for Eclipse(Help → Software Updates)。
  3. 新建 Web Application Project,自動生成 HelloWorld Servlet。
  4. 本地運行 https://localhost:8080 驗證。
  5. 申請 GAE 帳號,點擊部署圖示發布至雲端。

電子書分享網站設計

用例

  • 上傳文件(含標題、標籤、描述、上傳者資訊)
  • 搜尋文件
  • 列出最新上傳

JDO 資料模型

@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class File {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent private String username;
    @Persistent private String useremail;
    @Persistent private Date uploadDate;
    @Persistent private String filename;
    @Persistent private String description;
    @Persistent private String mimeType; // pdf, ppt, chm...
    @Persistent private Blob file;       // GAE Datastore Blob
    @Persistent private Set<Key> tags = new HashSet<Key>();
    // getter/setter 略
}

上傳頁面

<form method="post" action="upload" enctype="multipart/form-data">
  <input name="efile" type="file">
  <input name="filename" type="text" size=60>
  <input name="tags" type="text" size=60> <!-- 空白分隔 -->
  <textarea name="description" rows=5 cols=50></textarea>
  <input name="username" type="text" size=60>
  <input name="useremail" type="text" size=60>
  <input type="submit" value="upload">
</form>

上傳 Servlet 處理

  • 使用 Apache Commons FileUpload 解析 multipart/form-data,取得 File 物件與表單欄位。
  • 封裝為 JDO File 實體,設定 Blob、上傳時間、MIME 類型等。
  • 持久化:
PersistenceManager pm = PMF.get().getPersistenceManager();
try {
    pm.makePersistent(file);
} finally {
    pm.close();
}

JDO 配置

META-INF/jdoconfig.xml 指定 GAE Datastore 實作:

<jdoconfig>
  <persistence-manager-factory name="transactions-optional">
    <property name="javax.jdo.PersistenceManagerFactoryClass"
              value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/>
    <property name="javax.jdo.option.ConnectionURL" value="appengine"/>
    <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/>
  </persistence-manager-factory>
</jdoconfig>

核心優勢總結

  • 零運維:無需管理資料庫、伺服器、擴容。
  • 彈性擴展:自動應對流量波動。
  • 整合服務:Mail、Images、Memcache 開箱即用。
  • 標準 API:Servlet/JDO/JPA 降低學習曲線與遷移成本。

注意事項

  • GAE Datastore 非關聯式,無 JOIN、無交易(早期版本),需設計適應性資料模型。
  • 大檔案建議存放於 Google Cloud Storage,Datastore 僅存元資料與 Blob(1MB 限制)。
  • 長時間請求需使用 Task Queue 或 Backend 避免 30 秒截止限制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved