Interstage Application Server スタートガイド
目次 前ページ次ページ

第3章 Webアプリケーションの開発運用> 3.1 開発

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

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

プロジェクト作成
Javaファイル編集
JSPファイル作成
JSPファイル編集

プロジェクト作成

1. [スタート]メニューから[プログラム] > [Interstage] > [Studio]メニュー内の[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]プロジェクトに以下のファイルが生成されていることを確認してください。

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

Javaファイル編集

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

10. ワークベンチの[プロジェクトエクスプローラ]ビューでソースファイルを右クリックし、[アプリケーションから開く] > [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文が挿入できます。

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

JSPファイル作成

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

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

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

JavaServer Pageウィザード

項目名

入力値

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

NumGame/ContextRoot

ファイル名

NumGameBeanOut

JavaServer Pageウィザード

項目名

入力値

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

NumGame/ContextRoot

ファイル名

NumGameBeanRe

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

JSPファイル編集

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

15. ワークベンチの[プロジェクトエクスプローラ]ビューで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>

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


目次 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2007