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

第4章 J2EEアプリケーションの開発運用> 4.1 開発

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

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

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

プロジェクト作成

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

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

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

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

項目名

入力値

プロジェクト名

ShoppingCart

プロジェクト内容

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

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

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

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

項目名

入力値

コード生成

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

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

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

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

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

項目名

入力値

パッケージ

(何も指定しない)

サーブレットクラス

ShoppingCart

実装するメソッド

[doGet()]を選択

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

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

項目名

入力値

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

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

パッケージ

pkgShoppingCartBean

アプリケーションクラス

ShoppingCartBean

オブジェクトキー

cart

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

チェックする

JSDK2.0のAPIを使用する

チェックしない

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

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

項目名

入力値

パッケージ

(何も指定しない)

パラメタクラス

ShoppingCartParameter

文字セット

JISAutoDetect

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

チェックする

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

ShoppingTutorial

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

ShoppingTutorial

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

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

項目名

入力値

パッケージ

(何も指定しない)

ページクラス

ShoppingCartPage

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

ShoppingCart

コンテンツタイプ

text/html

文字セット

JISAutoDetect

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

Javaファイル編集

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

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

[ShoppingCart.java]

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

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

import pkgShoppingCartBean.ShoppingCartBean;
/**
* サーブレットクラス
*
* @author
* @version
*/
public class ShoppingCart 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 {
            // アプリケーションオブジェクトの取得
            ShoppingCartBean _application =
                (ShoppingCartBean) session.getAttribute("cart");
            if (_application == null) { // 新規またはSessionTimeOut
                _application = new ShoppingCartBean();
                session.setAttribute("cart", _application);
            }
            // 使用するパラメータクラスの決定
            ServletParameter inform = new ShoppingCartParameter();
            // パラメータクラスに入力されたデータを設定
            inform.setRequest(req);
/** 追加ここから **/
            // パラメータクラスから入力データを取得
            Hashtable tbl = inform.getValues();

            //購入およびキャンセル処理
            if (!((String)tbl.get("Purchase")).equals("") ||
                !((String)tbl.get("Cancel")).equals("")) {

                _application.remove();
                session.removeAttribute("cart");

                //JSP呼び出し
                RequestDispatcher rd = 
                getServletContext().getRequestDispatcher("/ShoppingCartPurchase.jsp");
                rd.forward(req,res);
                return;
            }

            //商品の種類番号を取得
            String SType = (String)tbl.get("RadioGroup");
            if (!SType.equals("")) {
                //Beanに商品を登録
                String ItemName = (String)tbl.get("D"+SType);
                _application.setItem(ItemName);
            }

            //JSP呼び出し
            RequestDispatcher rd =
                getServletContext().getRequestDispatcher("/ShoppingCartBean.jsp");
            rd.forward(req,res);
/** 追加ここまで **/

/** 削除ここから **
            // 表示するページクラスの決定
            ServletPage outform = inform.getPage(session);
            outform.setResponse(res);
            // ページクラスに出力するデータを設定
            outform.setContent(session, inform);
            // ブラウザ画面に表示
            outform.writeTo();
** ここまで **/

        } catch (Exception e) {

            /* 開発時にエラー情報をブラウザ上に表示したい場合は、
                以下のコメント化されている記述を有効にしてください。
                ただし、HTML画面へのスタックトレースの出力は、セキュリティ上の問題を内包します。
                運用時は適切な画面を作成する必要があります。*/
/** 追加ここから **/
                        session.removeAttribute("cart");
/** 追加ここまで **/

/*** コメント解除 **/
                        res.setContentType("text/plain; charset=iso-2022-jp");
                        PrintWriter out = res.getWriter();
                        e.printStackTrace(out);
                        out.close();
/** ここまで ***/

        }
    }

    /**
    * サーブレットの後処理
    */
    public void destroy() {
    }

    /**
    * サーブレット情報の取得
    * @returnサーブレット情報
    */
    public String getServletInfo() {
        return "A ShoppingCart";
    }
}

[ShoppingCartParameter.java]

/*
* ShoppingCartParameter.java
*
* Copyright (c)
*/
import javax.servlet.*;
import javax.servlet.http.*;

import java.io.*;
import java.util.Hashtable;

import pkgShoppingCartBean.ShoppingCartBean;
/**
* パラメータクラス
*
* @author
* @version
*/
class ShoppingCartParameter implements ServletParameter {
    //{{SRVWIZ_GENERATE(DATA)
/** 追加ここから **/
    String D1;
    String D2;
    String D3;
    String RadioGroup;
    String Submit;
    String Purchase;
    String Cancel;
/** 追加ここまで **/

/** 削除ここから **
    String text1;
** 削除ここまで **/

    //{{SRVWIZ_GENERATE

    HttpServletRequest _req;
    String _charset;

    /**
    * コンストラクタ
    */
    ShoppingCartParameter() {
        _charset = "JISAutoDetect";
    }

    /**
    * 入力されたデータを設定します。
    * 必要に応じて、取得した各入力データに'<'、'>'、'&' が
    * 含まれていないかどうかのチェックをする必要があります。
    *
    * @param        req        サーブレットへの要求
    * @exception    Exception  例外
    */
    public void setRequest(HttpServletRequest req) throws Exception {
        _req = req;
        //{{SRVWIZ_GENERATE(DATAINIT)
/** 追加ここから **/
        if ((D1 = getParameter("D1")) == null)
            D1 = "";
        if ((D2 = getParameter("D2")) == null)
            D2 = "";
        if ((D3 = getParameter("D3")) == null)
            D3 = "";
        if ((RadioGroup = getParameter("RadioGroup")) == null)
            RadioGroup = "";
        if ((Submit = getParameter("Submit")) == null)
            Submit = "";
        if ((Purchase = getParameter("Purchase")) == null)
            Purchase = "";
        if ((Cancel = getParameter("Cancel")) == null)
            Cancel = "";
/** 追加ここまで **/

/** 削除ここから **
        if ((text1 = getParameter("text1")) == null) {
            text1 = "";
        }
** 削除ここまで **/

        //{{SRVWIZ_GENERATE
    }

    /**
    * 入力されたデータをハッシュテーブルとして返します
    *
    * @return    入力されたデータ
    */
    public Hashtable getValues() {
        Hashtable tbl = new Hashtable();

        //{{SRVWIZ_GENERATE(GETDATA)
/** 追加ここから **/
        if (D1 != null)
            tbl.put("D1", D1);
        if (D2 != null)
            tbl.put("D2", D2);
        if (D3 != null)
            tbl.put("D3", D3);
        if (RadioGroup != null)
            tbl.put("RadioGroup", RadioGroup);
        if (Submit != null)
            tbl.put("Submit", Submit);
        if (Purchase != null)
            tbl.put("Purchase", Purchase);
        if (Cancel != null)
            tbl.put("Cancel", Cancel);
/** 追加ここまで **/

/** 削除ここから **
        if (text1 != null) {
            tbl.put("text1", text1);
        }
** 削除ここまで **/

        //{{SRVWIZ_GENERATE
        return tbl;
    }

    /**
    * 入力されたデータを返します
    *
    * @param        nameパラメタの名前
    * @return       パラメタの値
    * @exception    Exception 例外
    */
    protected String getParameter(String name) throws Exception {
        String value = _req.getParameter(name);
        if (value == null)
            return null;
        return new String(value.getBytes("8859_1"), _charset);
    }

    /**
    * サーブレットへの要求を返します
    *
    * @return        サーブレットへの要求
    */
    public HttpServletRequest getRequest() {
        return _req;
    }

    /**
    * 表示するページクラスを決定します
    *
    * @return        ページクラス
    * @exception    Exception 例外
    */
    public ServletPage getPage(HttpSession session) throws Exception {

        /* ここからユーザ定義 */
        ShoppingCartBean _application =
            (ShoppingCartBean) session.getAttribute("cart");
        return new ShoppingCartPage();
        /* ここまで */
    }
}

[ShoppingCartBean.java]

package pkgShoppingCartBean;
/*
* ShoppingCartBean.java
*
* Copyright (c)
*/

/** 追加ここから **/ import javax.ejb.*; import javax.rmi.*; import java.io.*; import java.util.*; import javax.naming.*; import pkgTutorialBean.*; /** 追加ここまで **/ /** * アプリケーションクラス * * @author * @version */ public class ShoppingCartBean {

/** 削除ここから ** public ShoppingCartBean() { } ** 削除ここまで **/
/** 追加ここから **/
    TutorialBeanRemote TutorialBeanR=null;

    public ShoppingCartBean()
        throws NamingException,CreateException,java.rmi.RemoteException {

        javax.naming.Context initialContext = null;
        initialContext = new InitialContext();
        Object obj =
            (Object)initialContext.lookup("java:comp/env/ejb/TutorialBean");
        TutorialBeanHome TutorialBeanH =
            (TutorialBeanHome)PortableRemoteObject.narrow(obj, TutorialBeanHome.class);
        TutorialBeanR = TutorialBeanH.create();
    }

    public void setItem(String ItemName) throws java.rmi.RemoteException {
        TutorialBeanR.AddCart(ItemName);
    }

    public Item[] getItem() throws java.rmi.RemoteException {
        Item[] item = null;
        item = TutorialBeanR.getItems();
        return (item);
    }

    public void remove() throws javax.ejb.RemoveException,java.rmi.RemoteException {
        TutorialBeanR.remove();
    }
/** 追加ここまで **/

}

HTMLファイル作成

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

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

13. [選択]ダイアログで[標準ページ]を選択して[次へ]をクリックします。

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

[標準HTMLページ生成ウィザード] ダイアログ[標準ページ情報]ページ

項目名

入力値

ソースフォルダ

ShoppingCart/ContextRoot

ファイル名

ShoppingTutorialMain

ページタイトル

ShoppingTutorialMain

15. 12から14の手順を繰り返して、ShoppingTutorialDummy.htmlを作成します。

[標準HTMLページ生成ウィザード] ダイアログ[標準ページ情報]ページ

項目名

入力値

ソースフォルダ

ShoppingCart/ContextRoot

ファイル名

ShoppingTutorialDummy

ページタイトル

ShoppingTutorialMainbottom

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

HTMLファイル編集

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

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

[ShoppingTutorial.html]

<HTML>

<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META name="GENERATOR" content="FUJITSU PAGE EDITOR 3.0">
<TITLE>ShoppingTutorial</TITLE>
</HEAD>

<BODY>
<!-- 追加ここから -->
<P align="center">
<FONT size="6"><STRONG>ショッピングカート</STRONG></FONT></P>
<P align="center">
<HR>

<P></P>
<P align="center">
<FORM action="/ShoppingCart/cart" method="get" target="rbottom">
    <TABLE border="1" width="80%">
        <TBODY>
        <TR>
        <TD bgcolor="#00ffff" width="33%">
        <P align="center"><STRONG>テレビ</STRONG></P></TD>
        <TD bgcolor="#00ffff" width="33%">
        <P align="center"><STRONG>コンピュータ</STRONG></P></TD>
        <TD bgcolor="#00ffff" width="33%">
        <P align="center"><STRONG>冷蔵庫</STRONG></P></TD>
        </TR>
        <TR>
        <TD>
        <P>&nbsp;
        <SELECT id="Drop1" name="D1" size="1"       style="HEIGHT: 20px; WIDTH: 225px">
        <OPTION selected         value="19型フラットテレビ">19型フラットテレビ
        </OPTION>
        <OPTION         value="21型テレビBS内蔵">21型テレビBS内蔵
        </OPTION>
        <OPTION         value="21型液晶テレビ">21型液晶テレビ
        </OPTION>
        </SELECT></P></TD>
        <TD>
        <P>&nbsp;
        <SELECT id="Drop2" name="D2" size="1"       style="HEIGHT: 20px; WIDTH: 225px">
        <OPTION selected         value="ノートパソコン">ノートパソコン
        </OPTION>
        <OPTION         value="デスクトップパソコン">デスクトップパソコン
        </OPTION>
        </SELECT></P></TD>
        <TD>
        <P>&nbsp;
        <SELECT id="Drop3" name="D3" size="1"       style="HEIGHT: 20px; WIDTH: 225px">
        <OPTION selected         value="2ドア冷蔵庫(100L)">2ドア冷蔵庫(100L)
        </OPTION>
        <OPTION         value="2ドア冷蔵庫(200L)">2ドア冷蔵庫(200L)
        </OPTION>
        <OPTION         value="3ドア冷蔵庫(300L)">3ドア冷蔵庫(300L)
        </OPTION>
        </SELECT></P></TD>
        </TR>
        <TR>
        <TD align="middle">購入
        <INPUT id="Value4" name="RadioGroup" type="radio" value="1"></TD>
        <TD align="middle">購入
        <INPUT id="Value5" name="RadioGroup" type="radio" value="2"></TD>
        <TD align="middle">購入
        <INPUT id="Value6" name="RadioGroup" type="radio"   value="3"></TD>
        </TR>
        </TBODY>
    </TABLE>
    <P align="center">
    <INPUT name="Submit" type="submit" value="  送  信  "></P>
</FORM>
<HR>
<!-- 追加ここまで -->

<!-- 削除ここから --
<H1>ShoppingTutorial</H1>

<P>&nbsp;</P>

<P>&nbsp</P>
<FORM method="get" action="ShoppingCart" style="MARGIN-LEFT: 40px" >
  <INPUT type="text" name="text1" size="15" value="">
  <P>&nbsp;</P>
  <INPUT type="submit" value="Submit">
  <INPUT type="reset" value="Reset">
</FORM>
<P>&nbsp;</P>
-- 削除ここまで -->

</BODY>
</HTML>

[ShoppingTutorialDummy.html]

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META name="GENERATOR" content="FUJITSU PAGE EDITOR 3.0">
<TITLE>ShoppingTutorialMainbottom</TITLE>
<BASE target="rtop"> <!-- 追加 --> 
</HEAD>
<BODY>

<!-- ここに HTML を挿入してください -->

</BODY>
</HTML>

[ShoppingTutorialMain.html]

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=shift_jis">
<META name="GENERATOR" content="FUJITSU PAGE EDITOR 3.0">
<TITLE>ShoppingTutorialMain</TITLE>
</HEAD>
<!-- 追加ここから -->
<FRAMESET frameborder="no" rows="60%,*">
    <FRAME name="rtop" src="ShoppingTutorial.html">
    <FRAME name="rbottom" src="ShoppingTutorialDummy.html">
</FRAMESET>
<!-- 追加ここまで -->

<!-- 削除ここから --
<BODY>
<!-- ここに HTML を挿入してください >
</BODY>
-- 削除ここまで -->

</HTML>

JSPファイル作成

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

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

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

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

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

項目名

入力値

ソースフォルダ

ShoppingCart/ContextRoot

ファイル名

ShoppingCartBean

ページタイトル

ShoppingCart

21. 18から20の手順を繰り返して、ShoppingCartPurchase.jspを作成します。

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

項目名

入力値

ソースフォルダ

ShoppingCart/ContextRoot

ファイル名

ShoppingCartPurchase

ページタイトル

ShoppingCart

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

JSPファイル編集

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

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

[ShoppingCartBean.jsp]

<HTML>
<HEAD>
<TITLE>ShoppingCart</TITLE>
<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" %>
<!-- 追加ここから -->
<jsp:useBean id="cart" scope="session" class="pkgShoppingCartBean.ShoppingCartBean">
</jsp:useBean>
<!-- 追加ここまで -->

</HEAD>
<BODY>

<!-- 追加ここから -->
<CENTER>
<H2>現在の購入商品</H2>
<FORM name="Purchase" action="/ShoppingCart/cart" method="get">
    <INPUT type="submit" value="  購  入  " name="Purchase">&nbsp; 
    <INPUT type="submit" value="キャンセル" name="Cancel"> 
</FORM>
<TABLE border="1">
    <TBODY>
    <TR>
    <TD align="middle" bgcolor="#00ffff"><STRONG>商品名</STRONG></TD>
    <TD align="middle" bgcolor="#00ffff"><STRONG>数量</STRONG></TD>
    </TR>
<%
    pkgTutorialBean.Item[] items = cart.getItem();
    for (int i = 0; i < items.length; i++) {
      out.println("<TR><TD align=\"middle\">"+items[i].getName()+"</TD>");
      out.println("<TD align=\"middle\">"+items[i].getQuantity()+"</TD></TR>");
    }
%>
    </TBODY>
</TABLE>
</CENTER>
<BR>
<!-- 追加ここまで -->

</BODY>
</HTML>

[ShoppingCartPurchase.jsp]

<HTML>
<HEAD>
<TITLE>ShoppingCart</TITLE>
<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" %>
</HEAD>
<BODY>

<!-- 追加ここから --> <CENTER> <H2>またのご利用お待ちしております。 <BR></H2> </CENTER> <!-- 追加ここまで --> </BODY> </HTML>

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

クラス作成(ビルド)

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

25. Apdesignerの[パッケージエクスプローラ]ビューで[ShoppingCart]プロジェクトを右クリックし、[プロパティ]を選択します。

26. [ShoppingCartのプロパティ]ダイアログで[Javaのビルドパス]を選択し、ビルドに必要なライブラリを指定するため、[ライブラリ]タブで[Jarの追加]をクリックします。

27. [Jar選択]ダイアログで[TutorialBean]>[TutorialBean.jar]を選択し、[OK]をクリックします。

28. [ShoppingCartのプロパティ]ダイアログに戻り、[ビルドパス上のJarおよびクラスフォルダ]にTutorialBean.jarが追加されていることを確認して[OK]をクリックします。

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

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

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

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


目次 前ページ次ページ

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