1‐1
次のサーブレットを作成しなさい。
・パッケージ : exer01
・クラス : Greet01
・ブラウザのアドレスバーにアドレスを指定すればアクセスできるようにする。
・"今日は。はじめまして!!"と表示する。

1‐2
次のHTMLとサーブレットを作成しなさい。
(1) HTML
・ディレクトリ : jmwapp配下のexer01
・ファイル : Parameter01.html
・番号と名前を入力させる。
・送信ボタンをクリックすると下記のサーブレットにPOST要求でアクセスする。
(2) サーブレット
・パッケージ : exer01
・クラス : Parameter01
・上記のHTMLで指定された番号と名前を取得し、ブラウザに表示する。
・文字化けを考慮する。文字コードはEUC-JPとする。
・形式は、text/plainでよい。

1‐3
次のサーブレットを作成しなさい。
・パッケージ : exer01
・クラス : Parameter02
・受け取ったパラメータを全て表示する。
・同じ名前のパラメータに複数の値が対応している場合も考慮すること。
・GET要求・POST要求両方で同じ処理が動作するようにすること。
・文字化けを考慮する。文字コードはEUC-JPとする。
・形式は、text/plainでよい。

1‐4
1‐3で作成したサーブレットに次のようにアクセスしなさい。
・ブラウザのアドレスバーにアドレスを入力する。
・適当にパラメータを指定する。
・同じ名前に複数の値を対応させたパラメータも指定する。

1‐5
1‐3で作成したサーブレットにPOST要求でアクセスする次のようなHTMLを作成しなさい。
・ディレクトリ : jmwapp配下のexer01
・ファイル : Parameter02.html
・テキストフィールド、ラジオボタン、チェックボックス、ドロップダウンリストを作成する。
・ラジオボタン、チェックボックスに関しては、同じ名前のボタンを3つ以上作成する。
・わからないものについては自分で調べること。もちろん人に聞くのもあり。
・実際にサーブレットにアクセスし、特にチェックボックスの動作に付いて確認しなさい。

1‐6
次の問に答えなさい。
・サーブレットのインスタンスが生成されるときに動作するメソッドは何ですか?
・サーブレットのインスタンスが破棄されるときに動作するメソッドは何ですか?
・GET要求でアクセスされたときに動作するメソッドは何ですか?
・POST要求でアクセスされたときに動作するメソッドは何ですか?

1‐7
次のサーブレットを作成しなさい。
・パッケージ : exer01
・クラス : Countup01
・GET要求・POST要求両方で同じ処理が動作するようにする。
・int型のフィールドを宣言する。
・doGet()またはdoPost()でint型のローカル変数を宣言する。
・doGet()またはdoPost()でフィールドとローカル変数を1ずつ増やし、その結果をブラウザに表示する。
・アクセスするたびにフィールド、ローカル変数の値がどうなるか確認し、なぜそうなるかを人に説明しなさい。

2‐1
次のサーブレットを作成しなさい。
・パッケージ : exer02
・クラス : Cookie01
・name01という名前、value01という値でクッキーを作成し、有効期限を10時間に設定し、ブラウザに送信する。
・実際にサーブレットにアクセスし、その後ブラウザがそのクッキーを保持していることを確認しなさい。

2‐2
次のサーブレットを作成しなさい。
・パッケージ : exer02
・クラス : Cookie02
・name01という名前のクッキーを取得し、その値を表示する。
・name01という名前のクッキーが取得できなければ、その旨を表示する。

2‐3
次のHTMLとサーブレットを作成しなさい。
(1) HTML
・ディレクトリ : jmwapp配下のexer02
・ファイル : Cookie03.html
・名前と値を入力させる。
・実行ボタンをクリックすると下記のサーブレットにPOST要求でアクセスする。
(2) サーブレット
・パッケージ : exer02
・クラス : Cookie03
・上記のHTMLで指定された名前と値からなるクッキーを、ブラウザに送信する。
・有効期限は設定しなくてよい。
・送信したクッキーの名前と値をブラウザに表示する。

2‐4
次のサーブレットを作成しなさい。
・パッケージ : exer02
・クラス : Cookie04
・取得した全てのクッキーについて、その名前と値を表示する。
・形式は、text/plainでよい。

3‐1
セッション管理を行う2つの方法を答えなさい。

3‐2
3‐1のセッション管理の2つの方法それぞれについて、次のことをしなさい。
・セッション番号をブラウザがどのような方法で運んでくるかを、人に説明する。

3‐3
次のサーブレットを作成しなさい。
・パッケージ : exer03
・クラス : SessionId01
・セッション番号を表示する。
・形式は、text/plainでよい。

3‐4
3‐3のサーブレットについて次のことをしなさい。
・ブラウザでクッキーが有効の場合、その同じブラウザから再度アクセスしても、セッション番号が変更されないことを確認する。
・その理由を人に説明する。

3‐5
3‐3のサーブレットについて次のことをしなさい。
・ブラウザでクッキーが無効の場合、その同じブラウザからアクセスするたびに、セッション番号が変更されることを確認する。
・その理由を人に説明する。

3‐6
次のサーブレットを作成しなさい。
・パッケージ : exer03
・クラス : SessionId02
・セッション番号を表示する。
・ブラウザでクッキーが無効の場合でも、同じブラウザからのアクセスならばセッション番号が変更されないような仕掛けを用意する。

4‐1
Webアプリケーションで使用する4種類のスコープを全て答えなさい。

4‐2
4‐1のスコープについてそれぞれどういう範囲のページが同じスコープになるのか答えなさい。

4‐3
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : AppSet01
・アプリケーションスコープに"app01", "Application Data!!"という名前と値のペアを登録する。

4‐4
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : AppGet01
・アプリケーションスコープの"app01"という名前に対応する値を表示する。

4‐5
4‐3、4‐4のサーブレットにブラウザから順にアクセスした場合について次のことをしなさい。
・情報の受渡しができることを確認する。

4‐6
4‐5の操作の後、ブラウザを再起動し、再び4‐4のサーブレットにアクセスした場合について次のことをしなさい。
・情報を取得できることを確認する。
・その理由を人に説明する。

4‐7
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : SesSet01
・セッションスコープに"ses01", "Session Data!!"という名前と値のペアを登録する。

4‐8
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : SesGet01
・セッションスコープの"ses01"という名前に対応する値を表示する。

4‐9
4‐7、4‐8のサーブレットにブラウザから順にアクセスした場合について次のことをしなさい。
・情報の受渡しができることを確認する。

4‐10
4‐9の操作の後、ブラウザを再起動し、再び4‐8のサーブレットにアクセスした場合について次のことをしなさい。
・情報を取得できないことを確認する。
・その理由を人に説明する。

4‐11
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : ReqSet01
・リクエストスコープに"req01", "Request Data!!"という名前と値のペアを登録する。

4‐12
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : ReqGet01
・リクエストスコープの"req01"という名前に対応する値を表示する。

4‐13
4‐11、4‐12のサーブレットにブラウザから順にアクセスした場合について次のことをしなさい。
・情報の受渡しができないことを確認する。
・その理由を人に説明する。

4‐14
次の2つのメソッドの違いを人に説明しなさい。
・HttpServletResponseインターフェースのsendRedirect()メソッド
・RequestDispatcherインターフェースのforward()メソッド

4‐15
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : RedirectSet01
・リクエストスコープに"req01", "Redirect Data!!"という名前と値のペアを登録する。
・4‐12のサーブレットにHttpServletResponseのsendRedirect()でジャンプする。

4‐16
4‐15のサーブレットにアクセスした場合について次のことをしなさい。
・情報の受渡しができないことを確認する。
・その理由を人に説明する。

4‐17
次のサーブレットを作成しなさい。
・パッケージ : exer04
・クラス : ForwardSet01
・リクエストスコープに"req01", "Forward Data!!"という名前と値のペアを登録する。
・4‐12のサーブレットにRequestDispatcherのforward()でジャンプする。

4‐18
4‐17のサーブレットにアクセスした場合について次のことをしなさい。
・情報の受渡しができることを確認する。
・その理由を人に説明する。

5‐1
次のJSPの暗黙オブジェクトの名前と型を答えなさい。

(1) ブラウザに出力するWriter
(2) サーブレットのdoGet()やdoPost()の第一引数に相当
(3) サーブレットのdoGet()やdoPost()の第二引数に相当
(4) セッションスコープを管理するオブジェクト
(5) アプリケーションスコープを管理するオブジェクト

5‐2
JSPはJavaコードに変換されます。その中で、サーブレットのdoGet()やdoPost()(またはservice()メソッド)のようにアクセスするたびに動作するメソッドは何ですか?(授業のプリントではとくに書いてませんが変換後のJavaコードをみて答えなさい。)

5‐3
次のJSPの用語について記述形式と役割を答えなさい。指令以外の役割については、変換後のJavaコードがどうなるかという観点から人に説明しなさい。
(1) 指令
(2) 宣言
(3) スクリプトレット
(4) 式
(5) 固定テンプレート

5‐4
次のJSPを作成しなさい。
・ディレクトリ : exer05
・ファイル名 : Header01.jsp
・全てのヘッダ情報の名前と値を表形式でブラウザに出力する。
・EL、JSTLは使用しない。
・特殊タグとしては1つのスクリプトレットしか使用しない。

5‐5
5‐4のJSPを変形し、同じ目的の次のJSPを作成しなさい。
・ディレクトリ : exer05
・ファイル名 : Header02.jsp
・全てのヘッダ情報の名前と値を表形式でブラウザに出力する。
・EL、JSTLは使用しない。
・out.print()やout.println()を使用しない。

6‐1
次のサーブレットとJSPを作成しなさい。完成後、サーブレットにアクセスし、動作を確認しなさい。
(1) サーブレット
・パッケージ : exer06
・クラス : Servlet01
・次のような文字列の配列をLinkedListに格納し、それをリクエストスコープに"player01"という名前で登録したあと、下記のJSPにディスパッチによってジャンプする。
{"51", "イチロー", "マリナーズ"}
{"55", "松井秀喜", "ヤンキース"}
{"25", "松井稼頭央", "メッツ"}
{"15", "井口資仁", "ホワイトソックス"}
{"2", "城島健司", "マリナーズ"}
(2) JSP
・ディレクトリ : jmwapp配下のexer06
・ファイル : Show01.jsp
・上記のサーブレットで登録したリクエストスコープの情報を取得し、表の形式でブラウザに表示する。
・特殊タグは使用せず、ELやJSTLを使用する。

7‐1
選手の名簿を管理するサイトを作成しなさい。
行うことは次のとおりです。
・選手の表示
・選手の登録
・選手の削除
選手がもつ情報は次のとおりです。
・背番号
・名前
・チーム名
このサイトで使用するディレクトリ、パッケージは次のとおりにします。
・HTML、JSPのディレクトリ : exer07
・Javaのパッケージ : exer07
作成するものは次のとおりです。
・選手そのもののモデルであるJavaBeans : Player01
・処理の中心となるサーブレット : Servlet01
・選手登録用のページとなるHTML : Insert01.html
・選手削除用のページとなるHTML : Delete01.html
・選手表示用のページとなるJSP : Show01.jsp
作成のおおまかな方針は次のとおりです。
・選手情報はアプリケーションスコープにLinkedListを登録し、そこにPlayer01のインスタンスを追加していく。
・Show01.jspは特殊タグを使用せず、ELやJSTLを使用する。

8‐1
7‐1と同様に選手の名簿を管理するサイトを作成しなさい。
ただし、今度はデータベースを利用し、メニューのページも用意します。
また、ある1チームの名簿とするので、当然背番号は重複できないとします。
行うことは次のとおりです。
・選手の表示
・選手の登録
・選手の削除
選手がもつ情報は次のとおりです。
・背番号
・名前
・国籍
・身長
・体重
このサイトで使用するディレクトリ、パッケージは次のとおりにします。
・HTML、JSPのディレクトリ : exer08
・Javaのパッケージ : exer08
作成するものは次のとおりです。
・データベースのテーブル名 : playerslist
・処理の中心となるサーブレット : Servlet01
・メニューのページとなるHTML : Menu01.html
・選手登録用のページとなるHTML : Insert01.html
・選手削除用のページとなるHTML : Delete01.html
・選手表示用のページとなるJSP : Show01.jsp
作成のおおまかな方針は次のとおりです。
・表示処理は、サーブレットからデータベースにアクセスし、その結果をリクエストスコープに登録した後、ディスパッチによってJSPにジャンプする。
・Show01.jspは特殊タグを使用せず、ELやJSTLを使用する。