Servlet日記(2001/02/17)

本日の成果

 本屋で[1]の本を見つけたので、Servlet日記(2000/12/09) InternetBeans Expressに引き続き、InternetBeans Expressで少し遊んでみました。今回は、ixSubmitButtonを使ってみます。

 まず、自動生成されるファイルを元に、次のようなHTMLファイルを用意しておきます。ここには、Submitボタンが2つあります。name属性の値を、それぞれ別にしておきます。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>
Servlet1
</title>
</head>
<body>

<form action="/servlet/untitled7.Servlet1" method="post">
<p>[Submit] を押すとサーブレットがポストされますServlet1</p>
<p><input type="submit" name="Submit" value="Submit">
<input type="submit" name="Submit2" value="Submit2">
<input type="reset" value="Reset"></p>
</form>
</body>
</html>

 で、サーブレット側には、ixSubmitButtonを2つ用意しておき、それぞれが押されたときに呼ばれるイベントハンドラで、どちらのボタンが押されたか分かるようにします。本当は、この実装ではまずいのですが、動作確認用なので、まあいいや。

package untitled7;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import com.borland.internetbeans.*;

public class Servlet1 extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html; charset=Shift_JIS";
  IxPageProducer ixPageProducer1 = new IxPageProducer();
  IxSubmitButton ixSubmitButton1 = new IxSubmitButton();
  IxSubmitButton ixSubmitButton2 = new IxSubmitButton();
  /**グローバル変数の初期化*/
  public void init(ServletConfig config) throws ServletException {
    super.init(config);
  }
  /**HTTP Get リクエストの処理*/
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>Servlet1</title></head>");
    out.println("<body>");
    out.println("サーブレットは GET を受信しました。これは応答です。");
    out.println("</body></html>");
  }
  /**HTTP Post リクエストの処理*/
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    ixPageProducer1.servletPost(this, request, response);
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>Servlet1</title></head>");
    out.println("<body>");
    out.println("サーブレットは POST を受信しました。これは応答です。<p>");
    out.println("押されたボタン=" + (String)getServletContext().getAttribute("submit"));
    out.println("</body></html>");
  }

  public Servlet1() {
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
    ixSubmitButton1.setControlName("Submit");
    ixSubmitButton1.addSubmitListener(new com.borland.internetbeans.SubmitListener() {
      public void submitPerformed(SubmitEvent e) {
        ixSubmitButton1_submitPerformed(e);
      }
    });
    ixSubmitButton2.setControlName("Submit2");
    ixSubmitButton2.addSubmitListener(new com.borland.internetbeans.SubmitListener() {
      public void submitPerformed(SubmitEvent e) {
        ixSubmitButton2_submitPerformed(e);
      }
    });
    ixSubmitButton2.setPageProducer(ixPageProducer1);
    ixSubmitButton1.setPageProducer(ixPageProducer1);
    ixPageProducer1.setHtmlFile("C:\\yamaWork\\jbproject\\untitled7\\src\\untitled7\\Servlet1.shtml");
  }

  void ixSubmitButton1_submitPerformed(SubmitEvent e) {
    getServletContext().setAttribute("submit", "Submit");
  }

  void ixSubmitButton2_submitPerformed(SubmitEvent e) {
    getServletContext().setAttribute("submit", "Submit2");
  }
}

 これで実行すると、Submitボタンが押されるとSubmit、Submit2ボタンが押されるとSubmit2が表示され、それぞれのイベントハンドラが呼ばれていることが分かります。でも、それだけなんです。やはり、データモジュールを使うプログラムでないと、InternetBeans Expressの本領を発揮できないのかも。

参考文献

  1. 藤井 等, Borland JBuilder4によるインターネットアプリケーション構築入門, カットシステム, 2001年

本日の教訓

 ixSubmitButtonコントロールのイベントハンドラが呼ばれることが分かりました。

Servlet日記の目次 ホーム