Interstage Application Server スタートガイド |
目次
![]() ![]() |
第3章 Webアプリケーションの開発運用 | > 3.1 開発 |
Webアプリケーションの開発手順について説明します。
ここでは、開発環境であるApdesignerの標準サーブレットプロジェクト作成ウィザードでプロジェクトを作成し、JSPファイルを追加してWebアプリケーションを作成します。
プロジェクト作成
Javaファイル編集
JSPファイル作成
JSPファイル編集
クラス作成(ビルド)
1. [スタート]メニューから[プログラム]>[Interstage]>[Apworks]メニュー内の[Apworks]を選択し、Apdesignerを起動します。
2. Apdesignerのメニューから[ファイル]>[新規]>[プロジェクト]を選択します。
3. [新規プロジェクト]ダイアログボックスで[J2EE]>[Webアプリケーションプロジェクト]を選択し、[次へ]をクリックします。
4. [新規]ダイアログボックスの[Webアプリケーションプロジェクト]ページでは、プロジェクトの情報を入力して[次へ]をクリックします。
項目名 |
入力値 |
---|---|
プロジェクト名 |
NumGame |
プロジェクトコンテンツ |
[ワークスペース内に新規プロジェクトを作成]を選択 |
5. [新規]ダイアログボックスの[Java設定]ページでは、何も変更せずに[次へ]をクリックします。
6. [選択]ページでは、生成するコードを指定して[終了]をクリックします。
項目名 |
入力値 |
---|---|
コード生成 |
[コード生成を行う]を選択 |
使用可能なコード生成ウィザード |
[サーブレット]を選択 |
7. [サーブレットプロジェクト]ダイアログボックスの[サーブレットクラス情報]ページでは、サーブレットクラスの情報を設定して[終了]をクリックします。
項目名 |
入力値 |
---|---|
パッケージ |
pkgNumGame |
サーブレットクラス |
NumGame |
文字セット |
Shift_JIS |
実装するメソッド |
[doGet()]を選択 |
サーブレット呼び出すHTMLファイル |
[HTMLファイルの作成]をチェックしない |
8. Apdesignerの[パッケージエクスプローラ]ビューで、[NumGame]プロジェクトに以下のファイルが生成されていることを確認してください。
9. Apdesignerの[パッケージエクスプローラ]ビューで[NumGame]を選択し、Apdesignerのメニューから[ファイル]>[新規]>[クラス]を選択します。
10. [新規 Javaクラス]ダイアログボックスの[Java クラス]のページで、作成するJavaクラスの情報を入力して[終了]をクリックします。
項目名 |
入力値 |
---|---|
ソースフォルダ |
NumGame/src |
パッケージ |
pkgNumGameBean |
エンクロージング型 |
チェックしない |
名前 |
NumGameBean |
修飾子 |
[public]を選択 |
スーパークラス |
Java.lang.Object |
インタフェース |
指定しない |
どのメソッドスタブを作成しますか? |
チェックしない(すべて) |
現在のプロジェクトのプロパティで構成されたとおりコメントを追加しますか |
チェックしない |
11. Apdesignerの[パッケージエクスプローラ]ビューで、[NumGame]プロジェクトに以下のファイルが生成されていることを確認してください。
Javaエディタを使用して以下のソースファイルを編集します。
12. Apdesignerの[パッケージエクスプローラ]ビューでソースファイルを右クリックし、[アプリケーションから開く]>[Javaエディタ]を選択します。
package pkgNumGame; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; /** 追加ここから **/ import javax.servlet.RequestDispatcher; /** 追加ここまで **/ import javax.servlet.ServletConfig; 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 pkgNumGameBean.NumGameBean; /** 追加ここまで **/ /** * @author * */ public class NumGame extends HttpServlet { /** * サーブレットの初期化 * @param config サーブレットのコンフィギュレーション情報 * @exception ServletException サーブレット例外が起こった場合 */ public void init(ServletConfig config) throws ServletException { super.init(config); } /** * HTTP リクエストの処理 * @param req サーブレットへの要求 * @param res サーブレットからの応答 * @exception ServletException 要求を処理できない場合 * @exception IOException 要求の処理中に検出された場合 */ public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { HttpSession session = req.getSession(true); try { /** 削除ここから ** // ヘッダの設定 res.setContentType("text/html; charset=Shift_JIS"); res.setHeader("Pragma", "No-cache"); res.setHeader("Cache-Control", "no-cache"); res.setDateHeader("Expires", 0); // ブラウザ画面に表示 PrintWriter out; out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD>"); out.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">"); out.println("<TITLE>NumGame</TITLE>"); out.println("</HEAD>"); out.println("<BODY>"); out.println("</BODY>"); out.println("</HTML>"); ** 削除ここまで **/ /** 追加ここから **/ // アプリケーションオブジェクトの取得 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(req, "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=Shift_JIS"); // 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"; } /** * パラメタを獲得する。 * * @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; } } |
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]; } /** 追加ここまで **/ } |
13. Apdesignerのメニューから[ファイル]>[すべて保存]を選択し、編集したファイルを保存します。
以下のJSPファイルを作成し、プロジェクトに追加します。
14. Apdesignerのメニューから、[ファイル]>[新規]>[JavaServer Pages]を選択します。
15. [新規JSP]ダイアログボックスで[JavaServer Pages]を選択して[次へ]をクリックします。
16. [JSP生成ウィザード]ダイアログボックスの[JSP情報]ページでは、JSP情報を入力して[終了]をクリックします。
項目名 |
入力値 |
---|---|
ソースフォルダ |
NumGame/ContextRoot |
ファイル名 |
NumGameBeanOut |
文字セット |
Shift_JIS |
17. 14から16の手順を繰り返して、NumGameBeanRe.jspを作成します。
項目名 |
入力値 |
---|---|
ソースフォルダ |
NumGame/ContextRoot |
ファイル名 |
NumGameBeanRe |
文字セット |
Shift_JIS |
18. Apdesignerの[パッケージエクスプローラ]ビューで、[NumGame]>[ContextRoot]にJSPファイルが生成されていることを確認してください。
JSPエディタを使用して以下のJSPファイルを編集します。
19. Apdesignerの[パッケージエクスプローラ]ビューでJSPファイルを右クリックし、[アプリケーションから開く]>[テキストエディタ]を選択します。
<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <%@ page contentType="text/html; charset=Shift_JIS" %> <!-- 追加ここから --> <jsp:useBean id="gamebean" scope="session" class="pkgNumGameBean.NumGameBean"></jsp:useBean> <!-- 追加ここまで --> <!-- 削除ここから -- <%! /** * パラメタを獲得する。必要に応じて、このメソッドで取得した各入力文字列に'<'、'>'、'&' が * 含まれていないかどうかのチェックをする必要があります。 */ protected String getParameter(ServletRequest req, String name) throws Exception { String value = req.getParameter(name); if (value == null) return null; return new String(value.getBytes("iso-8859-1"), "Shift_JIS"); } %> -- 削除ここまで --> <TITLE>NumGameBeanOut</TITLE> </HEAD> <BODY> <!-- 削除ここから -- <H1>NumGameBeanOut</H1> <BR> -- 削除ここまで --> <!-- 追加ここから --> <CENTER> <BR> <FONT size="5"><%= gamebean.getCount() %>回目で正解です。</FONT><BR><BR> <HR> <A href="game?Number=0">再チャレンジ</A><BR> </CENTER> <!-- 追加ここまで --> </BODY> </HTML> |
<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <%@ page contentType="text/html; charset=Shift_JIS" %> <!-- 追加ここから --> <jsp:useBean id="gamebean" scope="session" class="pkgNumGameBean.NumGameBean"></jsp:useBean> <!-- 追加ここまで --> <!-- 削除ここから -- <%! /** * パラメタを獲得する。必要に応じて、このメソッドで取得した各入力文字列に'<'、'>'、'&' が * 含まれていないかどうかのチェックをする必要があります。 */ protected String getParameter(ServletRequest req, String name) throws Exception { String value = req.getParameter(name); if (value == null) return null; return new String(value.getBytes("iso-8859-1"), "Shift_JIS"); } %> -- 削除ここまで --> <TITLE>NumGameBeanRe</TITLE> </HEAD> <BODY> <!-- 削除ここから -- <H1>NumGameBeanRe</H1> <BR> -- 削除ここまで --> <!-- 追加ここから --> <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のメニューから[ファイル]>[すべて保存]を選択し、編集したファイルを保存します。
ビルドを実行してクラスファイルを作成します。
Apdesignerの初期状態では、ファイルの保存時に自動的にビルドが行われるようにオプションが設定されており、ビルド時にWARファイルを作成するようにビルドツールが設定されています。
そのため、Apdesignerのメニューで[プロジェクト]>[自動的にビルド] がチェックされている場合は、Webアプリケーションの実装を保存したときにエラーが発生していなければ、WARファイルが作成されています。[問題]ビューにエラーなどのメッセージが表示されていないことを確認します。
[プロジェクト]>[自動的にビルド]がチェックされていない場合は、Apdesignerの[パッケージエクスプローラ]ビューで[NumGame]プロジェクトを選択し、メニューから[プロジェクト]>[プロジェクトのビルド]を選択します。ビルド終了後、[問題]ビューにエラーなどのメッセージが表示されていないことを確認します。
目次
![]() ![]() |