Section1 - サーブレットモデル

1.1 HTTPリクエストのGET、POST、PUTによって呼び出される、 HttpServletクラスのメソッドをそれぞれ説明する。

HTTPのMETHOD HttpServletのメソッド 説明
GET doGet(...) URIを取得する
POST doPost(...) URIに情報を送信する
PUT doPut(...) URIを作成、更新する

HEAD

doHead(...)/doGet(...)

URIのヘッダ部分を取得する

DELETE

doDelete(...)

URIを消去する

OPTIONS

doOptions(...)

URIに対して使用可能なオプションの一覧を返す

TRACE

doTrace(...)

ループバックを起動する(?)

ほとんどの場合、GETかPOSTが使われます。

1.2 HTTPリクエストのGETとPOSTの相違点を説明する。

もともとの使いわけとしては、 GETがファイルの取得、POSTは(サーバーへ)データの送信するときに使われます。

通常の<a href="hoge.jsp">のリンクはGETリクエストになります。
GETでも、URLの後ろに、"hoge.jsp?aaa=bbb"とつけることで、サーバー側で文字列を解析することで、データ送信を行うことが可能です。

Javaでサーブレット、JSPを使う場合は、 コンテナがPOSTやGETの違いを吸収して、HttpServletRequestを作成してくれるので、 プログラマが、その違いをあまり意識する必要はありません。
ただし、呼び出されるメソッドが、上記1.1の表のように異なります。

HTMLのFORMでリクエストを出すとき、 ACTION="GET"にしたときは、 ブラウザのアドレスバーにフォーム情報が付加されたアドレスがわたされ、 ACTION="POST"にしたときは、 ブラウザのアドレスバーにフォーム情報は付加されないことを 確認してください。
ACTIONを省略したときはデフォルトのGETになります。

1.3 下記のオペレーションで、 使用されるインターフェイスとメソッド名を説明する。

やりたいこと メソッド
リクエストからHTML form情報を取得 HttpServletRequest#getParameter(String name)
サーブレット初期化パラメータを取得 ServletConfig#getInitParameter(String name)
HTTPリクエストヘッダ情報を取得 HttpServletRequest#getHeader(String name)など
レスポンスヘッダーを設定し、
そのレスポンスのコンテンツタイプを設定するための名称
ServletResponse#setContentType(String type)
レスポンスオブジェクトに対しテキストストリームを取得 ServletResponse#getWriter()
レスポンスオブジェクトに対しバイナリストリームを取得 ServletResponse#getOutputStream()
他のURLへHTTPリクエストをするリダイレクト HttpServletResponse#sendRedirect(String url)

1.4 以下の3つのWebスコープ内で値とリソースにアクセスし、 オブジェクト属性を設定するためのにインターフェイスとメソッドを説明する。

3つということですが、ページスコープを入れて4つで説明します。
スコープ 説明とメソッド
page
ページ
JSPでのページスコープ。サーブレットのローカル変数に同じ。
PageContext#setAttribute(key, obj)
PageContext#getAttribute(key)
request
リクエスト
クライアントへレスポンスを返すまで。 dispatchしたサーブレットやJSPの範囲
ServletRequest#setAttribute(key, obj)
ServletRequest#getAttribute(key)
session
セッション
同じセッションIDを割り振られたセッションに対して
例としてはショッピングカート
HttpSession#setAttribute(key, obj)
HttpSession#getAttribute(key)
application
アプリケーション
(サーブレットコンテキスト)
同じwebapp内のサーブレット、JSP
例としては、日替わり特売品など
ServletContext#setAttribute(key, obj)
ServletContext#getAttribute(key)

スコープの範囲の広さは
page < request < session < application
となります。

1.5 与えられたライフサイクルメソッド(init, service, destroy)で、 呼び出される時、方法、目的に関して、正しい記述を説明する。

メソッド 説明
init サーブレットがインスタンス化されたとき。
初期化処理(があれば)書く。
service リクエストの度
destory サーブレットの終了処理時
終了処理を書く。

1.6 Webリソースにincludeもしくは、forwardするRequestDispatcherオブジェクト を取得するメソッドの説明

RequestDispatcherのメソッド

RequestDispatcherインターフェイスには、以下の2つのメソッドがあります。

・forward(...)
 他のサーブレット(JSP、HTML)へ処理を移します。
 その後、forward元のサーブレットに処理は戻りません。
 (処理は戻りますが、クライアントへの出力は終了済です)

・include(...)
 他のサーブレット(JSP、HTML)へ処理を移します。
 その後、include元のサーブレットに処理が戻ります。

RequestDispatcherの取得方法

以下の2つの方法でRequestDispatcherを取得できます。

・ServletRequest#getRequestDispatcher(String path)
 pathには、相対パスか"/"ではじまるWebアプリケーションのコンテキストをルートとした絶対パスで指定。

・ServletContext#getRequestDispatcher(String path)
 pathには、"/"ではじまるWebアプリケーションのコンテキストをルートとした絶対パスを指定。

ServletContext#getRequestDispathcer(...)の方は、"/"で始まるパス以外の指定はできないことに注意してください。
また、指定するのはWebアプリケーションからのパスで、サーバーのルートからのパスではないことに注意してください。
"http://hoge.com/myapp/jsp/test.jsp"にディスパッチする場合
"/myapp/jsp/test.jsp"ではなく、
"/jsp/test.jsp"を指定します。

また、他のWebアプリケーションへアクセスするにはServletContext#getContext(String)を利用します。。