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

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

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

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

プロジェクト作成
Javaファイル編集
JSPファイル作成
JSPファイル編集
クラス作成(ビルド)

プロジェクト作成

1. [スタート]メニューから[プログラム]>[Interstage]>[Application Server Plus Developer]>[Apworks]を選択し、Apdesignerを起動します。

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

3. [新規プロジェクト]ダイアログの左ペインで[Java]>[Web]、右ペインで[Webアプリケーションプロジェクト]を選択し、[次へ]をクリックします。

4. [新規]ダイアログの[Webアプリケーションプロジェクト]ページでは、プロジェクトの情報を入力して[次へ]をクリックします。

[新規]ダイアログ [Webアプリケーションプロジェクト]ページ

項目名

入力値

プロジェクト名

NumGame

プロジェクト内容

[デフォルトの使用]をチェックする

5. [新規]ダイアログの[Java設定]ページでは、何も変更せずに[次へ]をクリックします。

6. [選択]ページでは、生成するコードを指定して[終了]をクリックします。

[新規]ダイアログ [選択]ページ

項目名

入力値

コード生成

[コード生成を行う]を選択

選択可能なコード生成ウィザード

[標準サーブレット]を選択

7. [標準サーブレットプロジェクト]ダイアログの[サーブレットクラス情報]ページでは、サーブレットクラスの情報を設定して[次へ]をクリックします。

[標準サーブレットプロジェクト]ダイアログ [サーブレットクラス情報]ページ

項目名

入力値

パッケージ

(何も指定しない)

サーブレットクラス

NumGame

実装するメソッド

[doGet()]を選択

8. [アプリケーションクラス情報]ページでは、アプリケーションクラスの情報を設定して[次へ]をクリックします。

[標準サーブレットプロジェクト]ダイアログ [アプリケーションクラス情報]ページ

項目名

入力値

アプリケーションクラスの使用

[セション単位で生成する]を選択

パッケージ

pkgNumGameBean

アプリケーションクラス

NumGameBean

オブジェクトキー

gamebean

アプリケーションクラスを生成

チェックする

JSDK2.0のAPIを使用する

チェックしない

9. [サーブレットパラメタクラス情報]ページでは、サーブレットパラメタクラスの情報を設定して[次へ]をクリックします。

[標準サーブレットプロジェクト]ダイアログ [サーブレットパラメタクラス情報]ページ

項目名

入力値

パッケージ

(何も指定しない)

パラメタクラス

NumGameParameter

文字セット

JISAutoDetect

サーブレットを呼び出すHTMLファイル

[HTMLファイルの作成]をチェックしない

10. [サーブレットページクラス情報]ページでは、サーブレットページクラスの情報を設定して[終了]をクリックします。

[標準サーブレットプロジェクト]ダイアログ [サーブレットページクラス情報]ページ

項目名

入力値

パッケージ

(何も指定しない)

ページクラス

NumGamePage

サーブレットページタイトル

NumGame

コンテンツタイプ

text/html

文字セット

iso-2022-jp

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

Javaファイル編集

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

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

[NumGame.java]

/*
* NumGame.java
*
* Copyright (c)
*/
import java.io.*;
import java.util.Hashtable;

import javax.servlet.*;
import javax.servlet.http.*;

import pkgNumGameBean.NumGameBean;
/**
* サーブレットクラス
*
* @author
* @version
*/
public class NumGame extends HttpServlet {

    /**
    * サーブレットの初期化
    * @param        config  サーブレットのコンフィギュレーション情報
    * @exception    ServletException サーブレット例外が起こった場合
    */
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    /**
    * HTTP Get リクエストの処理
    * @param        req  サーブレットへの要求
    * @param        res サーブレットからの応答
    * @exception    ServletException 要求を処理できない場合
    * @exception    IOException 要求の処理中に検出された場合
    */
    public void doGet(HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException {

        HttpSession session = req.getSession(true);

        try {
            // アプリケーションオブジェクトの取得
            NumGameBean _application =
                (NumGameBean) session.getAttribute("gamebean");
            if (_application == null) { // 新規またはSessionTimeOut
                _application = new NumGameBean();
                session.setAttribute("gamebean", _application);
/** 追加ここから **/
                _application.init();
/** 追加ここまで **/

} // 使用するパラメータクラスの決定 /** 追加ここから **/ NumGameParameter inform = new NumGameParameter(); /** 追加ここまで **/

/** 削除ここから** ServletParameter inform = new NumGameParameter(); ** 削除ここまで **/ // パラメータクラスに入力されたデータを設定 inform.setRequest(req); /** 削除ここから ** // 表示するページクラスの決定 ServletPage outform = inform.getPage(session); outform.setResponse(res); // ページクラスに出力するデータを設定 outform.setContent(session, inform); // ブラウザ画面に表示 outform.writeTo(); ** 削除ここまで **/
/** 追加ここから **/
            int num;
            try {
                num = Integer.parseInt(inform.getParameter("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(req,res);
/** 追加ここまで **/

} catch (Exception e) { /* 開発時にエラー情報をブラウザ上に表示したい場合は、 以下のコメント化されている記述を有効にしてください。 ただし、HTML画面へのスタックトレースの出力は、セキュリティ上の問題を内包します。 運用時は適切な画面を作成する必要があります。*/ /* res.setContentType("text/plain; charset=iso-2022-jp"); PrintWriter out = res.getWriter(); e.printStackTrace(out); out.close(); */

/** 追加ここから **/ res.setContentType("text/plain; charset=iso-2022-jp"); PrintWriter out = res.getWriter(); out.println("アプリケーションエラーが発生しました。ログファイルで内容を確認してください。"); e.printStackTrace(); out.close(); /** 追加ここまで **/

} } /** * サーブレットの後処理 */ public void destroy() { } /** * サーブレット情報の取得 * @return サーブレット情報 */ public String getServletInfo() { return "A NumGame"; } }

[NumGameBean.java]

package pkgNumGameBean;
import java.util.Random; /* 追加 */
/*
* NumGameBean.java
*
* Copyright (c)
*/

/**
* アプリケーションクラス
*
* @author
* @version
*/
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]; }
/** 追加ここまで **/

}

13. Apdesignerのメニューから[ファイル]>[すべて保存]を選択し、編集したファイルを保存します。

JSPファイル作成

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

14. Apdesignerのメニューから、[ファイル]>[新規]>[JavaServer Pages]を選択します。

15. [選択]ダイアログで[JSP出力ページ]を選択して[次へ]をクリックします。

16. [JSP出力ページ生成ウィザード]ダイアログの[出力ページ情報]ページでは、ページ情報を入力して[終了]をクリックします。

[JSP出力ページ生成ウィザード]ダイアログ [出力ページ情報]ページ

項目名

入力値

ソースフォルダ

NumGame/ContextRoot

ファイル名

NumGameBeanOut

エラーファイル名

NumGameError

アプリケーションクラスの使用

[セション単位で生成する]を選択

パッケージ

pkgNumGameBean

アプリケーションクラス

NumGameBean

識別子

gamebean

17. 14から16の手順を繰り返して、NumGameBeanRe.jspを作成します。

[JSP出力ページ生成ウィザード]ダイアログ [出力ページ情報]ページ

項目名

入力値

ソースフォルダ

NumGame/ContextRoot

ファイル名

NumGameBeanRe

エラーファイル名

NumGameError

アプリケーションクラスの使用

[セション単位で生成する]を選択

パッケージ

pkgNumGameBean

アプリケーションクラス

NumGameBean

識別子

gamebean

18. Apdesignerの[パッケージエクスプローラ]ビューで、[NumGame]>[ContextRoot]にJSPファイルが生成されていることを確認してください。

JSPファイル編集

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

19. Apdesignerの[パッケージエクスプローラ]ビューでJSPファイルを右クリックし、[アプリケーションから開く]>[JSPエディタ]を選択します。

[NumGameBeanOut.jsp]

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META name="GENERATOR" content="FUJITSU PAGE EDITOR 3.0">
<%@ page contentType="text/html; charset=shift_jis" %>
<%@ page errorPage="NumGameError.jsp" %>
<jsp:useBean id="gamebean" scope="session" class="pkgNumGameBean.NumGameBean"></jsp:useBean>
<TITLE>NumGameBeanOut</TITLE>
</HEAD>

<BODY>
<!-- 削除 ここから--
<H1>NumGameBeanOut</H1>
<BR>

<HR>
 -- 削除ここまで -->

<!--  追加ここから -->
<CENTER>
<BR>
<FONT size="5"><%= gamebean.getCount() %>回目で正解です。</FONT><BR><BR>
<HR>
<A href="game?Number=0">再チャレンジ</A><BR>
</CENTER>
<!--  追加ここまで -->
</BODY>
</HTML>

[NumGameBeanRe.jsp]

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META name="GENERATOR" content="FUJITSU PAGE EDITOR 3.0">
<%@ page contentType="text/html; charset=shift_jis" %>
<%@ page errorPage="NumGameError.jsp" %>
<jsp:useBean id="gamebean" scope="session" class="pkgNumGameBean.NumGameBean"></jsp:useBean>
<TITLE>NumGameBeanRe</TITLE>
</HEAD>

<BODY>
<!-- 削除 ここから--
<H1>NumGameBeanRe</H1>
<BR>

<HR>
-- 削除ここまで -->
<!--  追加ここから -->
<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=\"middle\" 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>

20. Apdesignerのメニューから[ファイル]>[すべて保存]を選択し、編集したファイルを保存します。

クラス作成(ビルド)

ビルドを実行してクラスファイルを作成します。

21. Apdesignerの[パッケージエクスプローラ]ビューで[NumGame]プロジェクトを選択し、メニューから[プロジェクト]>[プロジェクトのビルド]を選択します。

22. ビルドが正常に終了すると、[ログコンソール]ビューに以下のメッセージが表示されます。

ビルドが正常に行われました

これでWebアプリケーションの開発は終了です。


目次 前ページ次ページ

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