会議室予約システムスタート 本章のプログラムを御覧の際には、Tomcatが必要です。
こちらからダウンロード出来ます。
ファイルはzipフォルダに納められています。
解凍ソフト(Aladdin
Expander等)を使って解凍して下さい。
プロトタイプの作成 データは本物でないにしても、表示モデルを作成する事を「プロトタイプ」と言います。
此等の画面は、実際にはJSPで動的に生成される物で、画面と画面の間には情報を制御するサーブレットが入ります。
何れも、HTMLを生成する物なので、出来上がりイメージのHTML、つまり結果としてクライアントに送信されるHTMLを作ってみる事は、開発の初期の作業としては非常に重要です。 HTMLによる表の作成 HTMLで表を作成するには、「<TABLE>〜</TABLE>」タグを使います。
又、此のタブの内側に1行分を記述する「<TR>〜</TR>」タグを書きます。
更に、其の内側にセル1つ分のデータを記述する「<TD>〜</TD>」タグを書きます。
其のセルがタイトルの場合には、「<TH>〜</TH>」を使います。
データセルの中には、テキストボックスやボタンも置けます。
「border」指定で枠線の太さを指定します。
値を「0(border = 0)」にすると線は無くなります。
例: |
<TABLE border = 0>
<TR><TD>ID:</TD> <TD><input
type = "text" name = "userID"></TD><TR>
<TR><TD>パスワード:</TD><TD><input
type = "password" name = "password"></TD><TR>
</TABLE> | ハイパーリンク 文字をクリックして、別のページにジャンプしたりメール新規作成画面を開いたりする機能をハイパーリンクと言います。 <A HREF = "リンク先">リンクする文字列</A> |
例: |
<A HREF = "mailto:ishii@kaisya.co.jp">石井</A> |
<A HREF = "yoyakuJyoukyou.html">先週</A> |
クラス変数の宣言 「<%」と「%>」タグの中で、変数の宣言を行うと、ローカル変数として宣言されます。
クラス変数を宣言したい時には、以下のタグを使います。 クラス変数は、スレッドが終了しても継続して使えますが、其の反面、複数のスレッドが同時に起動されていてもクラス変数自体は1つしか存在しないので、取り扱いには注意が必要です。 上記の「total」は、JSPがロードされている間、最初の1回しか初期化されない為、合計値を求めようとすると履歴の全てを累積して計算されて終います。 HTMLのコメント文 HTMLにもコメントを沢山入れておきましょう。
HTMLでは、以下のタグで囲まれた部分は、無視されます。 此のタグは、HTMLのタグです。
従って、此のタグで囲まれた部分はブラウザでは非表示ですが、ソースで見られる状態でクライアントに送信されます。 JSPのコメント文 JSPにもコメントを沢山入れておきましょう。
「<%」と「%>」で囲まれた部分はJavaなので、Javaのコメント記述用の「/*」「*/」と「//」記号が其の侭使えます。
其の他に、下記のタグがJSPのコメント文となり、クライアントにも送信されません。 暗黙のオブジェクト JSPでは、宣言せずに使える暗黙のオブジェクト名が用意されています。
以下に一覧表を示します。 ページの属性名一覧
暗黙のオブジェクト |
変換後のクラス |
説明 |
request |
ServletRequest |
サーブレットの「doGet」や「doPost」の1つ目の引数
クライアントからの要求情報を保持
<% request.getParameter(・・・); %> |
response |
ServletResponse |
サーブレットの「doGet」や「doPost」の2つ目の引数
クライアントからの応答情報を保持
<% response.getWriter(); %> |
pageContext |
PageContext |
PageContextクラスは、サーブレットで持っているセッションやオブジェクトの情報を管理するクラス
JSP内では、余り使われない |
session |
HttpSession |
HttpSessionは、セッション情報を保持するクラス
<% session.getAttribute();
%> |
application |
ServletContext |
ServletContextクラスは、サーブレットの環境情報を保持しているクラスで、APIのバージョンやファイルが実際に置かれているパス名等を取り出せるが、JSP内では、余り使われない |
out |
JSPWriter |
クライアントに対する文字列の出力先
<% out.print(text); %> |
config |
ServletConfig |
ServletConfigクラスは、サーブレットの設定情報を保持しているクラス
JSP内では、余り使われない |
page |
Object |
サーブレットの「this」と同じ |
exception |
Throwable |
「Throwable」は、エラー情報を保持するクラス | includeアクション JSPに、他のJSPを含められます。
タグは以下の様に書きます。 <jsp:include page = "ファイル名" flush = "true"又は"false"/> |
ファイル名は先頭に「/」が有る時は、コンテキスト(此の場合は「yoyaku」)からの絶対パスとなり、先頭に「/」が無い場合は、相対パスになります。
例: |
<jsp:include page = "yoyaku.jsp"
flush = "true"/> | 「flush」が「true」の時は、バッファがフラッシュされます。
デフォルト値は「false」です。
以下の様に書くと、インクルードされるJSPにパラメータを渡せます。 <jsp:include page = "ファイル名" flush = "true"又は"false">
<jsp:param name = "パラメータ名" value = "パラメータ値" />
</jsp:include> |
サーブレットからのリクエストの転送 サーブレットに対するリクエストを他のサーブレットやJSPに転送するには、RequestDispacherインターフェースのforwardメソッドを使って、次の様に書きます。 getServletContext().getRequestDispatcher("転送先").forward(req, res); |
此処での転送先には、コンテキストルート(此の場合は「yoyaku」)からの絶対パスを書きます。
絶対パスですから、先頭は必ず「/」で始まります。
JSPやHTMLは拡張子迄書きますが、サーブレットの場合にはサーブレット名を指定するので、拡張子は書きません。
例: |
getServletContext().getRequestDispatcher("/jsp/jspSamole.jsp").forward(req,
res);
getServletContext().getRequestDispatcher("/servlet/ServletSample").forward(req,
res);
getServletContext().getRequestDispatcher("/htmlSample.html").forward(req,
res); | サーブレットから、他のサーブレットやJSPにリクエストを転送する際、setAttributeメソッドを使って、パラメータと一緒に転送出来ます。
パラメータは、「パラメータ名」と「パラメータ値」を1対として、1つ指定します。 req.setAttribute("パラメータ名", "パラメータ値"); |
パラメータ名は文字列でなければなりませんが、パラメータ値は、オブジェクトを何でも指定出来ます。
例: |
req.setAttribute("msg", "安全は人とクルマでつくるもの"); |
//パラメータ値が文字列の例 |
Color c = Color.blue;
req.setAttribute("color", c); |
//パラメータ値がColorクラスのオブジェクトの例 | 転送されたサーブレットやJSPでは、以下の様にパラメータを取り出します。 (パラメータ値の型)request.getAttribute("msg"); |
サーブレット側で転送したパラメータ値の型と転送先で受け取る型は、一致していなければなりません。
例: |
String message = (String)request.getAttribute("msg"); |
//文字列のパラメータ値を受け取る例 |
Color color = (Color)request.getAttribute("col"); |
//Colorクラスのパラメータ値を受け取る例 | 戻る |