Javaプログラミング/サーバサイド&ケータイJava

JSPとサーブレットのキャッチボール(3ページ目)

JSPとサーブレット。両者の間で必要な情報をやり取りするための基本を覚えましょう。

執筆者:掌田 津耶乃

サーブレットからJSPに送り返すには?


これで一応サーブレットでフォームを処理することはできるようになりました。が、これでは一方通行ですね。今度は、サーブレットからJSPに送り返す方法について説明をしましょう。

これには、実をいえばさまざまな方法があります。ここでは、もっとも汎用性のある方法として「セッション」というものを使った方法を紹介しましょう。

セッションとは、サーバーとクライアントの間の接続を保ち続けるために考え出されたものです。Webの世界では、クライアント(Webブラウザ)とサーバーの間の接続を保ち続ける機能はありません。サーバーからすれば、接続してくるクライアントは「どのクライアントが、前回これこれの送信をしてきたクライアントなのか」なんてことはわからないのです。

要するに、Webの世界ではサーバーとクライアントは常に「一期一会」、一度送信しても、次に送信するときには「初めての相手」としか思われないのです。けれど、場合によっては「私は他の誰でもない私なのよ。わかるでしょ?」ということをサーバーに求めたくなることもあります。例えば、オンラインショップなどでは、「今、接続しているこの相手は誰なのか」ということをきちんと識別できないといけません。

そこで考え出されたのが「セッション」です。セッションはクッキー情報などを利用し、「現在接続している人間は誰なのか」ということを識別できるようにするための概念です。サーバーとクライアントの間は、一度接続すると「セッション」というものが確立され、このセッションが保たれている間は「同一人物」であると判断されます。このセッションのおかげで、常に「私は私」ということが保証され続けるようになったのです。

まぁ、セッションの詳しい仕組みについてはここでは触れません。ここでは「セッション」を使うことで、サーバーとクライアントの間で常に情報を共有し続けることができる、ということだけ知っておいてください。

セッションを利用するには、以下のようにします。

●JSPでセッションをとりだす
「session」という名前の暗黙オブジェクトが用意されているのでこれを使います。

●サーブレットでセッションを取り出す
HttpServletRequestの「getSession」というメソッドで、HttpSessionクラスのインスタンスとして取り出します。

●セッション(HttpSessionまたはsession暗黙オブジェクト)で
 値をやりとりする
変数 = (session).getAttribute( 名前 );
(session).setAttribute( 名前 , 値 );


sessionまたはHttpSessionのgetAttributeを使うと、指定した名前の値を取り出すことができます。またsetAttributeでは、指定した名前で値を登録することができます。これを利用すれば、サーブレットからJSPにデータを送ることが可能になります。

では、実際にやってみましょう。まずは、JSP側を修正してみましょう。

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<!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=UTF-8">
    <title>JSP Page</title>
  </head>
  <body>

    <h1>JSP Page</h1>

    <%
      String msg = (String)session.getAttribute("message");
      if (msg == null || msg.equals("")) {
        out.println("<br/>※お名前を入力ください。<br/>");
      } else {
        out.println("<br/><h3>" + msg + "</h3><br/>");
      }
    %>
    
    <form action="NewServlet" method="POST">
<input name="msg" type="text">
        <input type="submit">
    </form>

  </body>
</html>


session.getAttributeで、セッションから"message"という名前の値を取り出していますね。このgetAttributeで取り出された値はObjectインスタンスになっているので、ここではStringにキャストして利用しています。このようにして、サーブレットから送られた値を、JSPで受け取ることができるのですね。


  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 5
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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