SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Groovy+GrailsでRailsなWeb開発

GroovyとGoogle App Engineでアプリ開発(後編)
~Googleのサービスを利用する方法

Groovy+GrailsでRailsなWeb開発 番外編 後編

  • X ポスト
  • このエントリーをはてなブックマークに追加

データの保存を用意する

 これでデータ利用のための下準備は整いました。では、データストアを利用してみましょう。まずは、SampleDataを保存する機能を作成します。値を入力するフォームを用意し、送信するとサーブレットでSampleDataを作って保存するようにします。

 まずは、フォームからです。war内に「add.html」というファイルを作成し、次のように記述します。

<?xml version="1.0" encoding="utf-8" ?>
<%@ page language="java" contentType="text/html; charset=utf-8"
		pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>SampleData Add</title>
	</head>
	<body>
		<h1>SampleData</h1>
		<table>
		<form method="post" action="/add">
			<tr>
				<td>MEMO:</td>
				<td><textarea name="data" cols="30" rows="3"></textarea></td>
			</tr>
			<tr>
				<td></td><td><input type="submit" /></td>
			</tr>
		</form>
		</table>
	</body>
</html>
add.htmlの画面
add.htmlの画面

 ここでは、テキストを記述するテキストエリアが1つあるだけのシンプルなフォームを用意してあります。ここから/addに送信し、これを受け取ったサーブレットが処理をする、という流れになります。

 では、続いてサーブレットを作成します。「src」内に、新たに「AddServlet.groovy」というファイルを作成し、次のように記述をしてください。

import gae_app.SampleData
import javax.servlet.http.*
import javax.jdo.*

class AddServlet extends HttpServlet {
	void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		resp.contentType = "text/plain"
		resp.writer.println "**CANNOT ACCESS!!**"
	}
	
	void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
		req.setCharacterEncoding("UTF-8")
		String s = req.getParameter("data")
		SampleData obj = new SampleData(s)
		PersistenceManagerFactory pmf = PMF.get()
		PersistenceManager pm = pmf.getPersistenceManager()
		try {
			pm.makePersistent(obj)
		} finally {
			pm.close()
		}
		resp.sendRedirect("/hello")
	}
}

 doGetには、簡単なメッセージを表示する処理だけを用意してあります。送信された処理は、doPostで行っています。ここでは、まず送られてきたパラメータを変数に取り出し、それを引数にしてSampleDataオブジェクトを作成しておきます。このオブジェクトをデータストアに保存するわけです。

PersistenceManagerFactory pmf = PMF.get()
PersistenceManager pm = pmf.getPersistenceManager()

 まず、PMF.getを呼び出してPersistenceManagerFactoryインスタンスを取得し、そこから「getPersistenceManager」というメソッドを呼び出しています。これは、実際にJDOを使ってオブジェクトを操作するための「PersistenceManager」クラスのインスタンスを取得するものです。

 オブジェクトの保存は、このPersistenceManagerで行います。それが、try部分の処理になります。

try {
	pm.makePersistent(obj)
} finally {
	pm.close()
}

 「makePersistent」は、引数に指定したオブジェクトを永続化する(データストアに保存する)働きをします。そして実行後、closeでインスタンスを開放し、作業終了です。意外と簡単です。

 サーブレットを作成したら、web.xmlを開き、<web-app>内にサーブレットを次のように登録しておきます。

<servlet>
	<servlet-name>AddServlet</servlet-name>
	<servlet-class>AddServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>AddServlet</servlet-name>
	<url-pattern>/add</url-pattern>
</servlet-mapping>

 これで、/addAddServletが呼び出されるようになります。実際に、add.htmlにアクセスして、テキストを投稿してみましょう。

次のページ
保管したSampleDataの表示

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Groovy+GrailsでRailsなWeb開発連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4193 2009/08/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング