Google App Engine(二)
上一篇: Android 元件 (Google App Engine) 建置雲端跟App互動(一)
本章運用到了:
MVC設計模式
Adapter接配線模式
BaseAdapter
ListView的 ViewHolider概念
本章目的:
1.在資料庫中 建立『資料表』,查詢『資料表』
2.『查詢』功能 下一篇→ Google App Engine(三)
3.『新增』、『刪除』、『變更』功能 完全互動 下一篇→ Google App Engine(四)
本章目的:
1.在資料庫中 建立『資料表』,查詢『資料表』
2.『查詢』功能 下一篇→ Google App Engine(三)
3.『新增』、『刪除』、『變更』功能 完全互動 下一篇→ Google App Engine(四)
GAE (AddServlet)
目的:在資料庫中建立資料表
位置:後台建立 (app中 第三篇再提到)
目的:在資料庫中建立資料表 位置:後台建立 (app中 第三篇再提到) |
Step1:新增Libraries
(B) 將jar檔 添加道專案中
(C) 添加成功,到App_cloud_backend,build中 會成功顯示下圖↓
Step2:建立AddServlet的Class(App_cloud_backend)
(A) 用途目的:新增資料
註冊
name= 類別名稱
class= 類別存放詳細的位置
url-pattent= 在url中需要輸入什麼找到他,很重要!! (因為每一個類 都有自己所對應的)
Myservlet 對應的是→ /hello
Addservlet 對應的是→ /add
Queryservlet 對應的是→ /query (待會)
|
(B) 開始撰寫AddServlet程式碼
JAVA:AddServlet
|
package com.example.myapplication.backend; import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import java.io.IOException; import java.util.Date; import java.util.Random; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class AddServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); //使用工廠獲取 DatastoreService DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); //創建一個資料表 name= book Entity book = new Entity("Book"); //資料表 放入資料 book.setProperty("title", "android"); book.setProperty("author", "Vincent"); book.setProperty("price", new Random().nextInt(500) + 500); book.setProperty("time", new Date().getDate()); //放入資料表 //DatastoreService對象並調用put方法寫入數據 ds.put(book); //有點類似 JAVA的System.out.print("") 打印出訊息 resp.getWriter().println("add ok"); } } |
(C) 先執行模擬器,完成後再Build。
(D)Build,訊息出現Successfully代表成功
注意每一個專案後面的數字都是專屬且隨機賦予的
因為google提供的免費試用是有額度限制的,
所以一旦超出額度限制就會產生錯誤, 請務必用自己產生的可避免錯誤
注意每一個專案後面的數字都是專屬且隨機賦予的
因為google提供的免費試用是有額度限制的,
所以一旦超出額度限制就會產生錯誤, 請務必用自己產生的可避免錯誤
(E) 到網路上確認是否沒問題,注意:網址後面要改成 /add
可以看出剛剛java撰寫打印出訊息 resp.getWriter().println("add ok");
Step3:找尋資料表
(A) 增加了資料,我們就會問說,那資料在哪裡呢?? 首先進到 Google Cloud Platform
(B) 我們會發現,重新整理一次網頁,Book資料表中的資料就會多新增一筆
(為了方便觀察,我們開啟兩個網頁觀察)
GAE (QueryServlet)
目的:查詢˙資料表
位置:後台建立 (app中 第三篇再提到)
目的:查詢˙資料表 位置:後台建立 (app中 第三篇再提到) |
Step1:建立QueryServlet的Class(App_cloud_backend)
(A) 用途目的:新增資料
(B) 文法賞析
(C) 撰寫程式
JAVA:QueryServlet
|
package com.example.myapplication.backend; import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.DatastoreServiceFactory; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Query; import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class QueryServlet extends HttpServlet { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/plain"); DatastoreService ds = DatastoreServiceFactory.getDatastoreService(); //查詢 資料表 Query q = new Query("Book"); for (Entity book : ds.prepare(q).asIterable()){ resp.getWriter().println(book); } } } |
(D)到web.xml註冊,執行模擬器→Bulid一次→查看網頁是否成功(注意網址最後為 /query)
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5">
<!--定義servlet的name、servlet的class-->
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.example.myapplication.backend.MyServlet</servlet-class>
</servlet>
<!--mapping=外界要透過哪一個url讀取,所以一般來說我們都會在網址後方+ "/hello"-->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!--手動建立一個AddServlet-->
<servlet>
<servlet-name>AddServlet</servlet-name>
<servlet-class>com.example.myapplication.backend.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>AddServlet</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
<!--手動建立一個QueryServlet-->
<servlet>
<servlet-name>QueryServlet</servlet-name>
<servlet-class>com.example.myapplication.backend.QueryServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>QueryServlet</servlet-name>
<url-pattern>/query</url-pattern>
</servlet-mapping>
<!--<welcome-file-list>-->
<!--沒有用到,我們就可以先刪除了-->
<!--<welcome-file>index.html</welcome-file>-->
<!--</welcome-file-list>-->
</web-app>
|