libro
www.tuyano.com
Google App Engine for Java(GAE/J)プログラミング入門

JDOQLによる検索について (3/4)

作成:2010-05-07 15:25
更新:2010-05-10 17:34

■クエリーを実行する

このQueryクラスを利用したやり方の他に、SQLなどと同様にクエリーをテキストとして用意し、実行させることも可能です。ただし、SQLではなく、「JDOQL」という独自のクエリー言語を使うことになりますが……。

では、これもサンプルを作成してみましょう。まずはWebページの作成からです。ここではfind2.htmlとしてページを作成しましょう。ここで行っているのは、find.htmlと似たようなものです。

ここでは、送信先として、"/find2?find=" + encodeURI(str)というように指定をしていますね。これで、/find2というアドレスにサーブレットを用意すればよいことになります。web.xmlに追記をして、FindData2Servletというサーブレットが受け取り、処理するようにしておきましょう。これに、クエリーを直接実行するための処理を用意しておけばよいわけですね。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※find2.htmlのソースコード


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <title>データの検索</title>
    <script type="text/javascript" src="lib.js"></script>
		<script type="text/javascript">
		<!--
		function findData(){
			var request = createHttpRequest();
			if (request == null){
				alert("HttpRequestが取得できませんでした。");
				return;
			}
			var str = document.getElementById("find").value;
			var uri = "/find2?find=" + encodeURI(str);
			request.open("GET",uri,true);
			request.setRequestHeader("User-Agent","XMLHttpRequest");
			request.onreadystatechange = function(){
				if (request.readyState == 4 && request.status == 200){
					callback(request);
				}
			}
			request.send();
		}

		function callback(request){
			var json = eval(request.responseText);
			var res = '';
			for (var i = 0;i < json.length;i++){
				res += '<tr><td>' + json[i].id + '</td>' + 
					'<td>' + json[i].title + '</td>' +
					'<td>' + json[i].date + '</td>' + '</tr>';
			}
			var obj = document.getElementById("datatable");
			obj.innerHTML = res;
		}
		//-->
		</script>
  </head>
  <body>
    <h1>データの検索</h1>
    <table>
      <tr>
        <td>FIND:</td>
        <td><textarea id="find" cols="40" rows="3"></textarea></td>
      </tr>
      <tr>
      	<td></td>
      	<td><input type="button" value="GET" onclick="findData();"></td>
      </tr>
    </table>
		<br>
    <table id="datatable" border="1">
      <tr>
        <td>no data.</td>
      </tr>
    </table>
    <br>
   </body>
</html>


※web.xmlへの追記


<servlet>
	<servlet-name>find2_data</servlet-name>
	<servlet-class>jp.tuyano.FindData2Servlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>find2_data</servlet-name>
	<url-pattern>/find2</url-pattern>
</servlet-mapping>
※関連コンテンツ

「Google App Engine for Java(GAE/J)プログラミング入門」に戻る