底下將會介紹五個不同的檔案,分別是
FunctionCall.java (將所有的Java功能全部寫在這個裡面,可以做呼叫)
PMF.java (主要是要使用到PersistenceManagerFactory這功能)
store.java (這個檔案有點類似像資料庫中的資料表)
WriteDataToDatastore.html (這是我寫的測試網頁,用來post資料給result.jsp)
result.jsp(處理post過來的資料,並且寫入到資料庫中)
FunctionCall.java
package com.study2fun.datastore; import java.util.List; import javax.jdo.Query; import javax.jdo.PersistenceManager; public class FunctionCall { public static void adddata(String name,String num){ //宣告一個PersistenceManager PersistenceManager pm = PMF.get().getPersistenceManager(); //創建一個資料表物件,並同時將資料寫入 store db = new store(name,num); try{ //透過PersistenceManager將資料表放入DataStore pm.makePersistent(db); }catch(Exception e){ e.printStackTrace(); }finally{ pm.close(); } } //這邊是一個查詢功能,爾後會在連結Facebook那邊寫詳細一點 public static List<store> sqlfile(String sql){ PersistenceManager pm = PMF.get().getPersistenceManager(); //此處可以做query的動作,有點類似SQL語法 Query query = pm.newQuery(store.class); List<store> result = (List<store>) query.execute(); return result; /* * for(filestore fs : result){ * System.out.println(fs.???) * } * */ } }
PMF.java
package com.study2fun.datastore; import javax.jdo.JDOHelper; import javax.jdo.PersistenceManagerFactory; public class PMF { private static final PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory("transactions-optional"); private PMF(){} public static PersistenceManagerFactory get(){ return pmfInstance; } }
store.java
package com.study2fun.datastore;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
//這個地方有點像一個資料表的意思
@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class store {
//可以設定主鍵,這邊是讓系統自動產生流水號
@PrimaryKey
@Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
Long id;
//各欄位的名稱和屬性
@Persistent
String name;
@Persistent
String num;
//各欄位的名稱和屬性
//@Persistent
//int No;
//設定建構子,將值傳進來
public store(String name,String num){
super();
this.name = name;
this.num = num;
}
public Long get_id(){return id;}
public String get_name(){return name;}
public String get_num(){return num;}
}
WriteDataToDatastore.html
<!DOCTYPE html> <html> <head> <meta charset="BIG5"> <title>寫入資料庫測試</title> </head> <body> <!-- 這邊簡單寫一個表單傳送的HTML網頁,並將值post到result.jsp這頁面 --> <FORM action="result.jsp" method="post"> 名字:<INPUT name="name" size=10 maxlength=20><P> 學號:<INPUT name="no" size=10 maxlength=20><P> <INPUT type="submit" value="送出表單"> <INPUT type="reset" value="重新輸入"> </body> </html>
result.jsp
<%@ page language="java" contentType="text/html; charset=BIG5" pageEncoding="BIG5"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=BIG5"> <title>Test</title> </head> <body> <!-- 這邊是屬於JSP網頁,我們需要把該頁所用到的Java功能import進來 --> <%@page import="com.study2fun.datastore.FunctionCall"%> <!-- 在JSP頁面中使用JAVA Code需要使用<%/*...*/%>包起來,如下面 --> <% //這邊會接收剛剛post過來的資料,並且要設定好相對應的名稱(如上一頁的的參數name="?") String name = request.getParameter("name"); String no = request.getParameter("no"); //呼叫Java功能,這邊是做寫入的動作 FunctionCall.adddata(name, no); %> <a href="http://127.0.0.1:8888/_ah/admin/datastore">查看本地資料庫</a> </body> </html>
執行本地端瀏覽器瀏覽結果
在要瀏覽的網頁檔上按下右鍵>>Run As>>Web Application
底下的Development Mode那邊會顯示一個網址,可以點擊後瀏覽。
而右上角有一個雙黃色的箭頭「Reload web server」則是當有做任何修改的話,只需存檔後,按下此紐,就會重新載入網頁,無須再Run As......
檢視本地資料庫的方式為,請在網址那邊打上http://127.0.0.1:8888/_ah/admin/可以進入到本機端管理介面,此時我們可以先看到資料庫是沒有資料的。
之後我們來嘗試新增一筆資料
新增完畢後,我們再到管理介面,並且列出資料
此時會發現剛剛新增的中文部分會顯示亂碼,英文則是正常的顯示,關於這點,目前在本地端不太要緊,之後上架到GAE平台後,可以支援中文的~
完整專案檔下載:下載
可以用xml作示範嗎???
回覆刪除不好意思,不是很懂您的意思...><"
刪除有點小神奇
回覆刪除完全沒用到Java Servlet
其實主要是因為這的平台是Google提供的~所以很多的功能不需要自己寫了~
回覆刪除這個範例 我有用GWT compile和 Deploy to app engine
回覆刪除可直接在網路上使用google雲端的datastore
請問這個範例 可以寫成讓.NET C#寫的網站來呼叫嗎?
(呼叫來執行新增 刪除cloud datastore裡的東西 等等動作)
請參考GAE官方有支援的語言:
刪除https://cloud.google.com/appengine/docs
想請教一下,GAE有支援將一份Excel檔的資料直接匯入GAE的資料庫內嗎?
回覆刪除