ページの先頭行へ戻る
Interstage Application Server スタートガイド

3.1.2 Webアプリケーションの開発

Webアプリケーションの開発手順について説明します。
ここでは、開発環境であるワークベンチのWebアプリケーションプロジェクトウィザードでプロジェクトを作成し、JSPファイルを追加してWebアプリケーションを作成します。

プロジェクト作成

Javaファイル編集

JSPファイル作成

JSPファイル編集

プロジェクト作成

  1. [スタート]メニューから[プログラム] > [Interstage] > [Studio V9.2] > [Interstage Studio]を選択し、ワークベンチを起動します。

  2. ワークベンチのメニューから[ファイル] > [新規] > [プロジェクト]を選択します。

  3. [新規プロジェクト]ウィザードで[J2EE] > [Webアプリケーションプロジェクト]を選択し、[次へ]をクリックします。

  4. [Webアプリケーションプロジェクト]ページでは、プロジェクトの情報を入力して[終了]をクリックします。


    [Webアプリケーションプロジェクト]ページ

    項目名

    入力値

    プロジェクト名

    NumGame

    内容

    [ワークスペース内に新規プロジェクトを作成]を選択

    JRE

    [デフォルトJREの使用]を選択

  5. [プロジェクトエクスプローラ]ビューで[NumGame]を選択し、ワークベンチのメニューより[ファイル] > [新規] > [サーブレット]を選択します。

  6. サーブレットウィザードでサーブレットクラスを作成します。


    サーブレットウィザード(1ページ目)

    項目名

    入力値

    プロジェクト

    NumGame

    フォルダ

    /NumGame/src

    Javaパッケージ

    pkgNumGame

    クラス名

    NumGame

    スーパークラス

    javax.servlet.http.HttpServlet

    既存のサーブレットクラスの使用

    (チェックしない)


    サーブレットウィザード(2ページ目)

    項目名

    入力値

    名前

    game

    初期化パラメタ

    (何も入力しない)

    URLマッピング

    /game


    サーブレットウィザード(3ページ目)

    項目名

    入力値

    修飾子

    [public]をチェック

    インタフェース

    javax.servlet.Servlet

    作成するメソッドスタブの選択

    [スーパークラスからのコンストラクタ]、[継承された抽象メソッド]、[doGet]を選択

  7. [プロジェクトエクスプローラ]ビューで[NumGame]を選択し、ワークベンチのメニューより[ファイル] > [新規] > [クラス]を選択します。

  8. Javaクラスウィザードでアプリケーションクラスを作成します。


    Javaクラスウィザード

    項目名

    入力値

    ソースフォルダ

    NumGame/src

    パッケージ

    pkgNumGameBean

    エンクロージング型

    チェックしない

    名前

    NumGameBean

    修飾子

    [public]を選択
    [abstract]、[final]をチェックしない

    スーパークラス

    java.lang.Object

    インタフェース

    指定しない

    作成するメソッドスタブの選択

    チェックしない(すべて)

    現在のプロジェクトのプロパティで構成したとおりコメントを追加

    チェックしない

  9. ワークベンチの[プロジェクトエクスプローラ]ビューで、[NumGame]プロジェクトに以下のファイルが生成されていることを確認してください。

    • NumGame.java

    • NumGameBean.java

    生成リソースの警告について
    ウィザードが生成したリソースに対して警告エラーが出力される場合がありますが、運用上は問題ありません。
    Javaソースについては、“Interstage Studio ユーザーズガイド”の“トラブルシューティング”の“ワークベンチ一般に関する問題”を参照してください。

Javaファイル編集

Javaエディタを使用して以下のソースファイルを編集します。

  1. ワークベンチの[プロジェクトエクスプローラ]ビューでソースファイルを右クリックし、[アプリケーションから開く] > [Javaエディタ]を選択します。

    NumGame.java
    /**
     * 
     */
    package pkgNumGame;
    
    import java.io.IOException;
    /** 追加ここから **/
    import java.io.PrintWriter;
    import java.io.UnsupportedEncodingException;
    import javax.servlet.RequestDispatcher;
    /** 追加ここまで **/
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    /** 追加ここから **/
    import javax.servlet.http.HttpSession;
    import pkgNumGameBean.NumGameBean;
    /** 追加ここまで **/
    
    /**
     * Servlet implementation class for Servlet: NumGame
     *
     */
    public class NumGame extends javax.servlet.http.HttpServlet implements
            javax.servlet.Servlet {
        /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#HttpServlet()
         */
        public NumGame() {
            super();
        }
    
        /* (non-Java-doc)
         * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request,
                HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            /** 追加ここから **/
            HttpSession session = request.getSession(true); 
            try {
                // アプリケーションオブジェクトの取得
                NumGameBean _application = (NumGameBean) session
                        .getAttribute("gamebean");
                if (_application == null) {
                    _application = new NumGameBean();
                    session.setAttribute("gamebean", _application); 
                    _application.init();
                }
                int num; 
                try {
                    num = Integer.parseInt(getParameter(request, "Number"));
                } catch (NumberFormatException ne) {
                    num = 0; 
                }
                // JavaBeanのプロパティ設定
                if (num == 0) {
                    _application.init();
                } else {
                    _application.check(num); 
                }
                String nextPage; 
                if (_application.getResult()) {
                    nextPage = "/NumGameBeanOut.jsp";
                } else {
                    nextPage = "/NumGameBeanRe.jsp";
                }
                // JSPファイル呼び出し
                RequestDispatcher rd = getServletContext().getRequestDispatcher(
                        nextPage); 
                rd.forward(request, response); 
            } catch (Exception e) {
                response.setContentType("text/plain; charset=iso-2022-jp");
                PrintWriter out = response.getWriter();
                out.println("アプリケーションエラーが発生しました。ログファイルで内容を確認してください。");
                e.printStackTrace();
                out.close();
            }
            /** 追加ここまで * */
        }
    /** 追加ここから **/
        protected static String getParameter(HttpServletRequest req, String name) {
            String value = req.getParameter(name);
            if (value == null) {
                return null;
            }
            String encodedValue;
            try {
                encodedValue = new String(value.getBytes("iso-8859-1"), "Shift_JIS");
            } catch (UnsupportedEncodingException e) {
                // エンコードに失敗したため、未エンコードの値を設定する。
                encodedValue = value;
            }
            return encodedValue;
        }
    /** 追加ここまで **/
    }
    NumGameBean.java
    package pkgNumGameBean;
    
    /** 追加ここから **/
    import java.util.Random;
    /** 追加ここまで **/
    
    public class NumGameBean {
    /** 追加ここから **/
        protected boolean[] buf = new boolean[9];
        protected int answer = 0;
        protected boolean result = false;
        protected int count = 0;
        public NumGameBean() {
        }
        public void init() {
            answer = (new Random().nextInt(9))+1;
            count = 0;
            result = false;
            for (int i=0; i<9 ; i++) {
                buf[i] = false;
            }
        }
        public void check(int ans) {
            count ++;
            if (answer == ans ) {
                result = true;
                return;
            }
            buf[ans-1] = true;
        }
        public boolean getResult() {
            return result;
        }
        public int getCount() {
            return count;
        }
        public boolean getBuf(int num) {
            return buf[num];
        }
    /** 追加ここまで **/
    }

    import文の挿入について
    必要な実装をコーディングしたあとにJavaエディタ上で右クリックし、コンテキストメニューから[ソース] > [インポートの編成]を行うと、プロジェクトに設定されたクラスパスに従った適切なimport文が挿入できます。

  2. ワークベンチのメニューから[ファイル] > [すべて保存]を選択し、編集したファイルを保存します。

JSPファイル作成

以下のJSPファイルを作成し、プロジェクトに追加します。

  1. ワークベンチのメニューから、[ファイル] > [新規] > [JSP]を選択します。

  2. JavaServer PageウィザードでJSPを作成します。


    JavaServer Pageウィザード

    項目名

    入力値

    親フォルダを入力または選択

    NumGame/ContextRoot

    ファイル名

    NumGameBeanOut


    JavaServer Pageウィザード

    項目名

    入力値

    親フォルダを入力または選択

    NumGame/ContextRoot

    ファイル名

    NumGameBeanRe

  3. ワークベンチの[プロジェクトエクスプローラ]ビューで、[NumGame] > [ContextRoot]にJSPファイルが生成されていることを確認してください。

JSPファイル編集

JSPエディタを使用して以下のJSPファイルを編集します。

  1. ワークベンチの[プロジェクトエクスプローラ]ビューでJSPファイルを右クリックし、[アプリケーションから開く] > [JSPエディタ]を選択します。
    ここではテキストモードで編集を行いますので、[テキスト]タブをクリックして切り替えます。

    NumGameBeanOut.jsp
    <%@ page language="java" contentType="text/html; charset=windows-31j"
        pageEncoding="windows-31j"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
    <!-- 削除ここから
    <title>ここにタイトルを挿入</title>
      -- 削除ここまで -->
    <!-- 追加ここから -->
    <jsp:useBean id="gamebean" scope="session" class="pkgNumGameBean.NumGameBean"></jsp:useBean>
    <title>NumGameBeanOut</title>
    <!-- 追加ここまで -->
    </head>
    <body>
    <!-- 追加ここから -->
    <center>
    <br>
    <font size="5"><%= gamebean.getCount() %>回目で正解です。</font><br><br>
    <hr>
    <a href="game?Number=0">再チャレンジ</a><br>
    </center>
    <!-- 追加ここまで -->
    </body>
    </html>
    NumGameBeanRe.jsp
    <%@ page language="java" contentType="text/html; charset=windows-31j"
        pageEncoding="windows-31j"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
    <!-- 削除ここから
    <title>ここにタイトルを挿入</title>
      -- 削除ここまで -->
    <!-- 追加ここから -->
    <jsp:useBean id="gamebean" scope="session" class="pkgNumGameBean.NumGameBean"></jsp:useBean>
    <title>NumGameBeanRe</title>
    <!-- 追加ここまで -->
    </head>
    <body>
    <!-- 追加ここから -->
    <center>
    <font size="6"><strong>数当てゲーム</strong></font><br><br><br>
    <font size="5">番号を選択して下さい。</font><br><br>
    <table border="2">
      <tbody><tr>
        <%
        for (int i=1; i<=9; i++){
          out.println("<td align=\"center\" height=\"50\" valign=\"center\" width=\"50\">");
          if ( gamebean.getBuf(i-1) ){
            out.println("<font size=\"4\" color=\"red\">NG</font>");
          } else {
            out.println("<font size=\"6\"><a href=\"game?Number="+i+"\">"+i+"</a></font>");
          }
          out.println("</td>");
          if (0 == (i%3) && i !=9 ) out.println("</tr><tr>");
        }
        %>
      </tr></tbody>
    </table><br>
    <font size="5"><%= gamebean.getCount() %>回不正解</font><br><br>
    <hr>
    </center>
    <!-- 追加ここまで -->
    </body>
    </html>
  2. ワークベンチのメニューから[ファイル] > [すべて保存]を選択し、編集したファイルを保存します。