Javaプログラミング/Javaプログラミング関連情報

データストアからデータを取得する(3ページ目)

今回は、Google App Engineのデータストアに保存されたデータを取り出す処理について考えてみましょう。

執筆者:掌田 津耶乃

サーブレットの作成


では、フォームの送信先となるサーブレットを作りましょう。これは、送信されたフォームからID番号を受け取り、そのIDのオブジェクトを検索して、結果をHTMLのテキストにまとめてセッションに保管し、リダイレクトする、という処理になります。

package jp.allabout;

import java.io.*;
import java.util.List;
import javax.jdo.PersistenceManager;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class Gae_findServlet extends HttpServlet {
  
  public void doGet(HttpServletRequest req,
      HttpServletResponse resp)
      throws IOException {
    resp.setContentType("text/text");
    req.setAttribute("result", "no data.");
  }
  
  @SuppressWarnings("unchecked")
  public void doPost(HttpServletRequest req,
      HttpServletResponse resp)
      throws IOException {
    resp.setContentType("text/html");
    String id = req.getParameter("id");
    PersistenceManager pm = PMF.get().getPersistenceManager();
    String query = "select from " + SampleData.class.getName()
      + " where id == " + id;
    List<SampleData> datas = (List<SampleData>) pm.newQuery(query).execute();
    String result = "<div>ID = " + id + "</div>";
    result += "<table border=\"1\">";
    result += "<tr><th>ID</th><th>Message</th><th>Account</th><th>Date</th></tr>";
    for(SampleData data : datas){
      result += "<tr>";
      result += "<td>" + data.getId() + "</td>";
      result += "<td>" + data.getMessage() + "</td>";
      result += "<td>" + data.getAccount() + "</td>";
      result += "<td>" + data.getDate() + "</td>";
      result += "</tr>";
    }
    result += "</table>";
    req.getSession().setAttribute("result", result);
    resp.sendRedirect("/find.jsp");
  }
}

ここでは、doPostで検索の処理を行っています。基本的な処理の流れは、全オブジェクトの取得とほとんど同じです。違いは、用意するクエリーだけです。

String query = "select from " + SampleData.class.getName()
    + " where id == " + id;

このようになっていますね。「select from クラス名 where id = 番号」というクエリーを用意しています。これを実行することで、指定したIDのオブジェクトだけが取得されるようになります。
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます