Webアプリケーションの開発手順について説明します。
ここでは、開発環境であるワークベンチのWebアプリケーションプロジェクトウィザードでプロジェクトを作成し、JSPファイルを追加してWebアプリケーションを作成します。
プロジェクト作成
[スタート]メニューから[プログラム] > [Interstage] > [Studio V9.2] > [Interstage Studio]を選択し、ワークベンチを起動します。
ワークベンチのメニューから[ファイル] > [新規] > [プロジェクト]を選択します。
[新規プロジェクト]ウィザードで[J2EE] > [Webアプリケーションプロジェクト]を選択し、[次へ]をクリックします。
[Webアプリケーションプロジェクト]ページでは、プロジェクトの情報を入力して[終了]をクリックします。
[Webアプリケーションプロジェクト]ページ
項目名 | 入力値 |
---|---|
プロジェクト名 | NumGame |
内容 | [ワークスペース内に新規プロジェクトを作成]を選択 |
JRE | [デフォルトJREの使用]を選択 |
[プロジェクトエクスプローラ]ビューで[NumGame]を選択し、ワークベンチのメニューより[ファイル] > [新規] > [サーブレット]を選択します。
サーブレットウィザードでサーブレットクラスを作成します。
サーブレットウィザード(1ページ目)
項目名 | 入力値 |
---|---|
プロジェクト | NumGame |
フォルダ | /NumGame/src |
Javaパッケージ | pkgNumGame |
クラス名 | NumGame |
スーパークラス | javax.servlet.http.HttpServlet |
既存のサーブレットクラスの使用 | (チェックしない) |
サーブレットウィザード(2ページ目)
項目名 | 入力値 |
---|---|
名前 | game |
初期化パラメタ | (何も入力しない) |
URLマッピング | /game |
サーブレットウィザード(3ページ目)
項目名 | 入力値 |
---|---|
修飾子 | [public]をチェック |
インタフェース | javax.servlet.Servlet |
作成するメソッドスタブの選択 | [スーパークラスからのコンストラクタ]、[継承された抽象メソッド]、[doGet]を選択 |
[プロジェクトエクスプローラ]ビューで[NumGame]を選択し、ワークベンチのメニューより[ファイル] > [新規] > [クラス]を選択します。
Javaクラスウィザードでアプリケーションクラスを作成します。
Javaクラスウィザード
項目名 | 入力値 |
---|---|
ソースフォルダ | NumGame/src |
パッケージ | pkgNumGameBean |
エンクロージング型 | チェックしない |
名前 | NumGameBean |
修飾子 | [public]を選択 |
スーパークラス | java.lang.Object |
インタフェース | 指定しない |
作成するメソッドスタブの選択 | チェックしない(すべて) |
現在のプロジェクトのプロパティで構成したとおりコメントを追加 | チェックしない |
ワークベンチの[プロジェクトエクスプローラ]ビューで、[NumGame]プロジェクトに以下のファイルが生成されていることを確認してください。
NumGame.java
NumGameBean.java
生成リソースの警告について
ウィザードが生成したリソースに対して警告エラーが出力される場合がありますが、運用上は問題ありません。
Javaソースについては、“Interstage Studio ユーザーズガイド”の“トラブルシューティング”の“ワークベンチ一般に関する問題”を参照してください。
Javaファイル編集
Javaエディタを使用して以下のソースファイルを編集します。
ワークベンチの[プロジェクトエクスプローラ]ビューでソースファイルを右クリックし、[アプリケーションから開く] > [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; } /** 追加ここまで **/ } |
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文が挿入できます。
ワークベンチのメニューから[ファイル] > [すべて保存]を選択し、編集したファイルを保存します。
JSPファイル作成
以下のJSPファイルを作成し、プロジェクトに追加します。
NumGameBeanOut.jsp
NumGameBeanRe.jsp
ワークベンチのメニューから、[ファイル] > [新規] > [JSP]を選択します。
JavaServer PageウィザードでJSPを作成します。
JavaServer Pageウィザード
項目名 | 入力値 |
---|---|
親フォルダを入力または選択 | NumGame/ContextRoot |
ファイル名 | NumGameBeanOut |
JavaServer Pageウィザード
項目名 | 入力値 |
---|---|
親フォルダを入力または選択 | NumGame/ContextRoot |
ファイル名 | NumGameBeanRe |
ワークベンチの[プロジェクトエクスプローラ]ビューで、[NumGame] > [ContextRoot]にJSPファイルが生成されていることを確認してください。
JSPファイル編集
JSPエディタを使用して以下のJSPファイルを編集します。
ワークベンチの[プロジェクトエクスプローラ]ビューでJSPファイルを右クリックし、[アプリケーションから開く] > [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> |
<%@ 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> |
ワークベンチのメニューから[ファイル] > [すべて保存]を選択し、編集したファイルを保存します。