HTML⇒Servlets⇒JSP

HTML から呼び出された Servlets で、スコープを設定して JSP で表示します。

前田稔の超初心者のプログラム入門

プログラムの作成

  1. "C:\tomcat\webapps\piyo のフォルダー構成です。
    +がフォルダーで、・がプログラマが格納するファイルで、*がコンパイラなどで作成するファイルです。
    +piyo
        +WEB-INF
            +classes
                ・MyServ.java       //スコープを設定して JSP を呼び出す Servlets
                *MyServ.class
            ・web.xml               //Servlets のマッピング
        ・servcall.htm              //MyServ を呼び出す HTML
        ・page.jsp                  //スコープ毎に表示する JSP
    
  2. ソースプログラムです。
    ファイル名 説明
    servcall.htm MyServ を呼び出す HTML
    MyServ.java スコープを設定して JSP を呼び出す Servlets
    page.jsp スコープ毎に表示する JSP
    web.xml TEXT FILE を入力 を参照して各自で作成して下さい
  3. MyServ.java をコンパイルして MyServ.class を作成します。
    詳細は JSP Error Guide を参照して下さい。
  4. servcall.htm から起動します。
    "C:\tomcat\bin\tomcat7w.exe" を選択して、管理者として実行から apache-tomcat を起動します。
    WWW ブラウザを起動して下記の URL を張り付けて下さい。
    http://localhost:8080/piyo/servcall.htm
    テキストボックスから適当なメッセージをタイプして下さい。
    ページ先頭のような形式で、メッセージが表示されたら完成です。

プログラムの説明

  1. HTML から Servlets を起動します。
    ここでは FORM からメッセージをタイプして myserv(MyServ.java)を呼び出します。
        <form method="post" action="./myserv">
          <input type="text" name="text1"><br>
          <input type="submit">
        </form>
        
  2. Servlets から setAttribute() でパラメータを設定して JSP を呼び出します。
    MyServ.java ではパラメータを受け取って、3種類のスコープで設定します。
    JSP にパラメータを渡すときは setAttribute() メソッドを使います。
    パラメータは、属性の名前と属性の値です。
    これで JSP から getAttribute()で取り出すことが出来るようになります。
        String str = request.getParameter("text1");
        request.setAttribute("msg", str);
        HttpSession session = request.getSession();
        session.setAttribute("msg", str);
        ServletContext context = this.getServletContext();
        context.setAttribute("msg", str);
        
  3. パラメータの設定が終わったら page.jsp を呼び出して表示します。
        RequestDispatcher dispatcher = context.getRequestDispatcher("/page.jsp");
        dispatcher.forward(request, response);
        
  4. Servlets から渡されたパラメータを表示する JSP(page.jsp)です。
    3種類のスコープごとにパラメータを受け取って表示します。
        String msg1 = (String)request.getAttribute("msg");
        String msg2 = (String)session.getAttribute("msg");
        String msg3 = (String)application.getAttribute("msg");
            ・・・
        REQUEST:<%=msg1 %><br>
        SESSION:<%=msg2 %><br>
        APPLICATION:<%=msg3 %>
        

  5. 正常に表示されたら、そのままの状態で page.jsp を直接呼び出して下さい。
    WWW ブラウザの別のページから下記の URL を張り付けて起動します。
    "http://localhost:8080/piyo/page.jsp"
    REQUEST: だけが null になるでしょう。
    REQUEST スコープは呼び出される毎にクリアされます。
  6. 今度はブラウザを再起動して、同じように呼び出します。
    WWW ブラウザに下記の URL を張り付けて下さい。
    "http://localhost:8080/piyo/page.jsp"
    REQUEST:とSESSION: が null になり、APPLICATION だけが残ります。
    複数のアプリケーションで情報を交換するときは、この機能を利用します。
  7. 私はこのソースコードで問題無く表示されたのですが、環境によっては文字化けするかも知れません。 (^_^;)
    文字化けするときは JSP Error Guide を参照して下さい。

Java Game Program