• 検索結果がありません。

project 2011 alpha 01 最近の更新履歴 Dr Hishiki's classroom (日紫喜研究室)

N/A
N/A
Protected

Academic year: 2018

シェア "project 2011 alpha 01 最近の更新履歴 Dr Hishiki's classroom (日紫喜研究室)"

Copied!
18
0
0

読み込み中.... (全文を見る)

全文

(1)

1

プロジェクト I/II (H グループ )

補足資料

はじめての Google App Engine for

Java  (きしだ なおき著)の活用

日紫喜 光良

2011/11/25

(2)

2

内容

サーブレットと JSP

– 動的なページ作成が目的

• CGI との比較→利点

データストア

保存できるデータ

– DatastoreService 型のオブジェクトでデータを出し入れする

登録

取得 / 検索

1つ取ってくる/丸ごと取ってくる

– サーブレットでの使い方

• サンプルプログラムのアレンジパターン

• NetBeans に関しての注意

• Java, JSP に関しての注意

• テキストの間違いと考えられる箇所

(3)

3

CGI( Common Gateway Interface

による動的なページの作成

HTTPサーバ プロセス HTTPGET

リクエスト

HTML/XML

HTTPGET/POST リクエスト

HTML/XML

リクエスト

CGI に対

するもので

なかった場

リクエスト

CGI に対

するもので

ある場合

外部プロセスが

起動される

CGIプログラム

標準入力

標準出力

環境変数 GET/POST 判断

パラメータの 読み取り 処理 出力 終了 ブラウザ

(4)

4

CGIの問題点(と言われている もの )

• プロセス起動のためパフォーマンスが悪い

• ステートレス(複数のリクエストにまたがってメ

モリ上でデータを維持できない)

(5)

5

サーブレットによる動的なページ作成

ブラウザ

HTTPサーバ プロセス

サーブレット・エンジンのプロセス から起動される

派生クラスのインスタンスのスレッド Servletクラス

と派生クラス

(常駐)

派生クラスの インスタンス doGet/doPost メソッド

リダイレクト 呼出し HTTP

GET/POST リクエスト

HTML/XML

起動

参考:(1)「はじめてのGoogle App Engine for Java 79~81, 101~106, 118~119 http://www.atmarkit.co.jp/fjava/keyword/jkey/jkey01.html

(2)Javaを紐解くための重点キーワード Java Servlet (サーブレット)

それぞれ GET/POST クエストを担 当

(6)

6

JSP も用いた動的なページ作成

ブラウザ

HTTPサーバ プロセス

Servletクラス と派生クラス

(常駐)

派生クラスのインスタンス doGet/doPost メソッド リダイレクト

GET/POST 呼出し リクエスト

HTML/XML

起動 JSP: JavaServer Page

JSPファイル

RequestDispatcher 型のオブジェクト

レスポンス処理を委 譲する(forward

JSPエンジン

実行時に処理

(b) JSPを呼び出す サーブレット

生成

(a)

(a)の例:「はじめての・・・」160頁 (b)の例:「はじめての・・・」39,

82~8339頁の解説) JSPファイルの書き方:「はじめて

の・・・」35~36, 81~86

(7)

7

Datastore に保存できるオブジェクト

Entity 型・・・「プロパティと値」のペアの集合

Kind Xxx

Kind Yyy

Kind Zzz

Property_AValue Property_BValue Property_CValue

各オブジェクトのKeyIDは省略してある。

データ型は「はじめての・・・」99,100頁を見よ

92 頁も読むこと

(8)

8

DatastoreService 型オブジェクトで

Datastore へデータを登録 / 取得(1)

ds: DatastoreService 型のオブジェクト

ds

Entity 型オブジェクト

obj

Datastore

ds.put( obj );

Kind ID

Entity 型オブジェクト

obj

ds.get( key );

KeyFactory クラスが Key クラス

のオブジェクト key を生成

IDとキーは登録時 に自動生成される

データの修正

→登録

データの

削除へ

データの登録

データの削除は

ds.delete( key );

データの取得

テキスト98頁も読むこと

(9)

9

DatastoreService 型オブジェクトで

Datastore からデータを取得( 2 )(検索)

ds: DatastoreService 型のオブジェクト

ds

Datastore

Kind

Entity型オブジェクト obj

Query クラス

のオブジェクト

q を生成

q にフィルター

を追加

PreparedQuery インターフェー スのオブジェク トpq

ds.prepare( q );

Entity型オブジェクト obj

Entity型オブジェクト obj

List<Entity> 型の

オブジェクト

検索とはいっても、 基本的には、1種 類のKindをまとめて とってくることしかで きないことに注意

結果をList 型で取得

テキスト98, 109113頁も読むこと

(10)

10

Datastore の使い方(1)

DBに登録する場合

HttpServletクラスの 派生クラス

doGet/doPost メソッド request

response

パラメータの値の取得(囲み参照)

DatastoreService型オブジェクトdsの生成 登録するEntity型オブジェクトxxxの生成 xxxの各プロパティに値を設定

dsを介してxxxを登録

「はじめての・・・」95, 97~101頁など参照

リクエストからのパラメータ の値の取得方法

getParameterを用いる (POSTの場合)

getPathInfo()を用いる (GETの場合)

(11)

11

Datastore の使い方(2)

キーでデータを取得する場合

HttpServletクラスの 派生クラス

doGet/doPost メソッド request

response

パラメータ、とくにIDの取得(囲み参照) DatastoreService型オブジェクトdsの生成 Key型オブジェクトkeyの生成

dsを介してEntity型オブジェクトxxxを取得 「はじめての・・・」104 103,

106頁など参照 リクエストからのパラメータ の値の取得方法

getParameterを用いる (POSTの場合)

getPathInfo()を用いる (GETの場合)

(12)

12

Datastore の使い方( 3

クエリーで取得(検索)する場合

HttpServletクラスの 派生クラス

doGet/doPost メソッド request

response

パラメータの値の取得(囲み参照)

DatastoreService型オブジェクトdsの生成 Query型オブジェクトqの生成

qにフィルターを設定

PreparedQuery型オブジェクトpqの生成 pqによるdsからのリスト型オブジェクトの 取得

「はじめての・・・」107~ 108, 109111頁など 参照

リクエストからのパラメータ の値の取得方法

getParameterを用いる (POSTの場合)

getPathInfo()を用いる (GETの場合)

(13)

13

サンプルプログラムのアレンジに向けて(1)

収納するデータ構造を考える

→複雑なものは避ける

例(1)本来可変個数のプロパティを固定個数にする

ID key Restaurant Reviewer 1 Review 1 Reviewer 2 Review 2

(14)

14

サンプルプログラムのアレンジに向けて( 2

データの処理の種類を決める

→どのサンプルプログラムと似ているか?

(例2)登録(Register)、一覧表示(List)、選択表示(Select)、削除(Delete)、書込み (Record)のどれかで済まされないか?

Register a restaurant

Delete a restaurant

List all the restaurants

Select a restaurant

Record/Modify a review about a restaurant

9596 132133

107108 131

127128

(15)

15

サンプルプログラムのアレンジに向けて( 3

データの処理の流れを決める

→どの画面がどのプログラムの入力あるい

は出力か?その画面は動的か静的か?

(例3)

List all the

restaurants

Delete a

restaurant

Record/

Modify

Register a

restaurant

List of the restaurants

Empty

/Recorded review(s) of a restaurant

Select a

restaurant

動的な画面はサーブレットか ら直接出力するか、JSPを用い るかによって作る。

(16)

16

NetBeans についての注意

• マルチメディアスタジオ備え付けのノートPCのディスク

はシャットダウン時にクリーンアップされることに注意

(初回のみ) Google App Engine SDK for Java をUSBメモ

リ上にダウンロードすること。

• 毎回の実習において、プラグインのインストール( 24

28 頁)、サーバーの追加( 2931 頁)を行うこと。

• (初回のみ)プロジェクトの作成( 32 頁)時に、保存場所

として USB メモリ上の /work を使うとよい

• プログラムやファイルの名前や URL マッピングを間違っ

たときは、 web.xml ファイルのGUIをもった設定画面か

ら訂正もしくは削除する( 89 頁参照)。

(17)

17

Java, JSP についての注意

• 関数やクラスを使うために必要なパッケージ

をインポートするのを忘れないこと

例: Date ・・・ java.util.Date

• 変数やメソッドの名前にはローマ字の日本語

ではなく英語を使うこと

(18)

18

テキストのコードで変えたほうがいいところ

• 36 頁  <c:out value=" →  <c:out

value='

閉じるほうも同様に。

• 102 頁本文 クラス名「 MemberIdSerlvet

→クラス名「 MemberIdServlet

• 131 頁  > 削除 </a></td>", > 削除

</a></td></tr>",

参照

関連したドキュメント

日臨技認定センターの認定は 5 年毎に登録更新が必要で、更新手続きは有効期間の最終

Desk Navigator グ ループ 通常業務の設定」で記載されているRidoc Desk Navigator V4への登録 方法に加えて新製品「RICOH Desk

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう

(2011)

パキロビッドパックを処方入力の上、 F8特殊指示 →「(治)」 の列に 「1:する」 を入力して F9更新 を押下してください。.. 備考欄に「治」と登録されます。

① Google Chromeを開き,画面右上の「Google Chromeの設定」ボタンから,「その他のツール」→ 「閲覧履歴を消去」の順に選択してください。.

技術士のCPD 活動の実績に関しては、これまでもAPEC

本要領は、新型インフルエンザ等対策特別措置法第 28 条第1項第1号の登録に関する規程(平成 25 年厚生労働省告示第