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

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

4.1.6 Webアプリケーションの実装

J2EEアプリケーションで使用するWebアプリケーションの作成を行います。
ここでは、WebアプリケーションプロジェクトにHTMLファイルとJSPファイルを追加して、Webアプリケーションを完成させます。

サーブレットクラス作成
アプリケーションクラス作成
Javaファイル編集
HTMLファイル作成
HTMLファイル編集
JSPファイル作成
JSPファイル編集
deployment descriptorの編集

サーブレットクラス作成

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

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

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

項目名

入力値

プロジェクト

ShoppingCart

フォルダ

/ShoppingCart/src

Javaパッケージ

pkgShoppingCart

クラス名

ShoppingCart

スーパークラス

javax.servlet.http.HttpServlet

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

(チェックしない)

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

項目名

入力値

名前

cart

初期化パラメタ

(何も入力しない)

URLマッピング

/cart

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

項目名

入力値

修飾子

[public]をチェック

インタフェース

javax.servlet.Servlet

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

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

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

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

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

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

Javaクラスウィザード

項目名

入力値

ソースフォルダ

ShoppingCart/src

パッケージ

pkgShoppingCartBean

エンクロージング型

チェックしない

名前

ShoppingCartBean

修飾子

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

スーパークラス

java.lang.Object

インタフェース

指定しない

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

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

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

チェックしない

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

Javaファイル編集

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

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

[ShoppingCart.java]

/**
 * 
 */
package pkgShoppingCart;

import java.io.IOException;
/** 追加ここから **/
import java.io.UnsupportedEncodingException;
import java.util.Hashtable;
import javax.servlet.RequestDispatcher;
/** 追加ここまで **/
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** 追加ここから **/
import javax.servlet.http.HttpSession;
import pkgShoppingCartBean.ShoppingCartBean;
/** 追加ここまで **/

/**
 * Servlet implementation class for Servlet: ShoppingCart
 *
 */
public class ShoppingCart extends HttpServlet {
    /* (non-Java-doc)
     * @see javax.servlet.http.HttpServlet#HttpServlet()
     */
    public ShoppingCart() {
        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 {
      // アプリケーションオブジェクトの取得
      ShoppingCartBean _application =
         (ShoppingCartBean) session.getAttribute("cart");
      if (_application == null) { // 新規またはSessionTimeOut
        _application = new ShoppingCartBean();
        session.setAttribute("cart", _application);
      }
      // パラメータクラスから入力データを取得
      Hashtable tbl = getValues(request);
      //購入およびキャンセル処理
      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(request,response);
        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(request,response);
      } catch (Exception e) {
        session.removeAttribute("cart");
      }
/** 追加ここまで **/
    }
/** 追加ここから **/
  /**
   * パラメタを獲得する。
   * 
   * @param    name    パラメタの名前
   * @return    パラメタの値
   */
  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;
  }

  public Hashtable getValues(HttpServletRequest req) throws Exception {
    String D1;
    String D2;
    String D3;
    String RadioGroup;
    String Submit;
    String Purchase;
    String Cancel;
    if ((D1 = getParameter(req, "D1")) == null)
      D1 = "";
    if ((D2 = getParameter(req, "D2")) == null)
      D2 = "";
    if ((D3 = getParameter(req, "D3")) == null)
      D3 = "";
    if ((RadioGroup = getParameter(req, "RadioGroup")) == null)
      RadioGroup = "";
    if ((Submit = getParameter(req, "Submit")) == null)
      Submit = "";
    if ((Purchase = getParameter(req, "Purchase")) == null)
      Purchase = "";
    if ((Cancel = getParameter(req, "Cancel")) == null)
      Cancel = "";
    Hashtable tbl = new Hashtable();
    tbl.put("D1", D1);
    tbl.put("D2", D2);
    tbl.put("D3", D3);
    tbl.put("RadioGroup", RadioGroup);
    tbl.put("Submit", Submit);
    tbl.put("Purchase", Purchase);
    tbl.put("Cancel", Cancel);
    return tbl;
  }
/** 追加ここまで **/
}

[ShoppingCartBean.java]

package pkgShoppingCartBean;
/** 追加ここから **/
import javax.ejb.*;
import javax.rmi.*;
import javax.naming.*;
import pkgTutorialBean.*;
/** 追加ここまで **/
public class 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ファイルを作成し、プロジェクトに追加します。

8. ワークベンチの[プロジェクトエクスプローラ]ビューで[ShoppingCart] > [ContextRoot]を選択し、ワークベンチのメニューから、[ファイル] > [新規] > [HTML]を選択します。

9. HTMLページウィザードでHTMLページを作成します。以下の情報を入力したら[終了]をクリックします。

HTMLページウィザード

項目名

入力値

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

ShoppingCart/ContextRoot

ファイル名

ShoppingTutorial


項目名

入力値

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

ShoppingCart/ContextRoot

ファイル名

ShoppingTutorialMain


項目名

入力値

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

ShoppingCart/ContextRoot

ファイル名

ShoppingTutorialDummy

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

HTMLファイル編集

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

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

[ShoppingTutorial.html]

<!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>
  -- 削除ここまで -->
<!-- 追加ここから -->
<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="center">購入
        <input id="Value4" name="RadioGroup" type="radio" value="1"></td>
        <td align="center">購入
        <input id="Value5" name="RadioGroup" type="radio" value="2"></td>
        <td align="center">購入
        <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>
<!-- 追加ここまで -->
</body>
</html>

[ShoppingTutorialDummy.html]

<!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>
  -- 削除ここまで -->
<!-- 追加ここから -->
<title>ShoppingTutorialMainbottom</title>
<!-- 追加ここまで -->
</head>
<base target="rtop"> <!-- 追加 -->
<body>

</body>
</html>

[ShoppingTutorialMain.html]

<!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>
  -- 削除ここまで -->
<!-- 追加ここから -->
<title>ShoppingTutorialMain</title>
<!-- 追加ここまで -->
</head>
<!-- 削除ここから --
<body>

</body>
  -- 削除ここまで-->
<!-- 追加ここから -->
<frameset frameborder="no" rows="60%,*">
    <frame name="rtop" src="ShoppingTutorial.html">
    <frame name="rbottom" src="ShoppingTutorialDummy.html">
</frameset>
<!-- 追加ここまで -->
</html>

JSPファイル作成

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

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

13. JavaServer PageウィザードでJSPを作成します。以下の情報を入力したら[終了]をクリックします。

JavaServer Pageウィザード

項目名

入力値

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

ShoppingCart/ContextRoot

ファイル名

ShoppingCartBean


項目名

入力値

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

ShoppingCart/ContextRoot

ファイル名

ShoppingCartPurchase

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

JSPファイル編集

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

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

[ShoppingCartBean.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="cart" scope="session" class="pkgShoppingCartBean.ShoppingCartBean"></jsp:useBean>
<title>ShoppingCartBean</title>
<!-- 追加ここまで -->
</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="center" bgcolor="#00ffff"><strong>商品名</strong></td>
    <td align="center" bgcolor="#00ffff"><strong>数量</strong></td>
    </tr>
<%
    pkgTutorialBean.Item[] items = cart.getItem();
    for (int i = 0; i < items.length; i++) {
      out.println("<tr><td align=\"center\">"+items[i].getName()+"</td>");
      out.println("<td align=\"center\">"+items[i].getQuantity()+"</td></tr>");
    }
%>
    </tbody>
</table>
</center>
<br>
<!-- 追加ここまで -->
</body>
</html>

[ShoppingCartPurchase.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>
  -- 削除ここまで -->
<!-- 追加ここから -->
<title>ShoppingCartPurchase</title>
<!-- 追加ここまで -->
</head>
<body>
<!-- 追加ここから -->
<center>
<h2>またのご利用お待ちしております。 
<br></h2>
</center >
<!-- 追加ここまで -->
</body>
</html>

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

deployment descriptorの編集

EJBを呼び出すために、DDエディタを使用して参照EJBを定義します。

1. ワークベンチの[プロジェクトエクスプローラ]ビューで[ShoppingCart] > [ContextRoot] > [WEB-INF] > [web.xml]を右クリックし、[アプリケーションから開く] > [DDエディタ(Web)]を選択します。

2. [参照EJB]タブを選択し、[参照EJB] > [追加]をクリックしてEJBを呼び出すための以下の情報を入力します。

[参照EJB]タブ

項目名

入力値

Beanの参照名

ejb/TutorialBean

Bean種別

Session

Homeインタフェース名

pkgTutorialBean.TutorialBeanHome

Remoteインタフェース名

pkgTutorialBean.TutorialBeanRemote

Bean名

TutorialBean.jar#TutorialBean

3. [ファイル]タブを選択し、[welcomeファイル] > [追加]をクリックして、[ファイル名]に次のファイル名を入力します。

4. 次のファイル名を選択し、[削除]をクリックして削除します。

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


目次 前ページ次ページ

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