SJC-WC 『1章HTTPとサーブレット』


≪HTTP≫

HTTPリクエスト:クライアント⇒サーバ
HTTPレスポンス:サーバ⇒クライアント

HTTPリクエストの構造
[リクエストライン]サーバに要求する処理の種類
[リクエストヘッダー]クライントに関する情報
[メッセージボディ]POSTメソッドの場合に送信される。HTMLのformとか

HTTPレスポンスの構造
[ステータスライン]リクエストの結果
[レスポンスヘッダー]サーバに関する情報
[メッセージボディ]クライアントに返送するデータ

WEBアプリケーションの誕生と変遷
初期:HTTPによる静的なコンテンツの配信
1次:CGIによる動的コンテンツが可能に(Perl)(マルチプロセス=処理が遅くなる)
2次:webアプリ専用の言語の誕生(Javaサーブレット、ASP、PHP)
3次:さらなる発展(J2EE、ASP.NET)

≪サーブレット≫
サーブレットコンテナ = サーブレットの実行環境 = RI
(RI:JAVAの仕様規約であるJSR-154の具体的な実装。Tomcatとか)

javax.servlet
   <interface>           <interface>
  ServletRequest      ServletResponse
△           △
|           |
javax.servlet
  <interface>            <interface>
HttpServletRequest    HttpServletResponse
    △           △
|           |  
[実装クラス]      [実装クラス]


ServletRequest


String getContentType():コンテントタイプを取得する

Locale getLocale() :Accept-Languageヘッダーに記述されたロケール情報を取得する

Enumeration getLocales() :Accept-Languageヘッダーに記述されたロケール情報を取得する(複数)

String getParameter(String) :引数で指定したパラメタ名に対応する値を取得。なければNullを返す

Map getParameterMap() :すべてのパラメタをMapオブジェクトとして取得する。複数選択可能なチェックボックス・ドロップダウンリストなど

String[] getParameterValues(String):引数で指定したパラメタ名に対応する値を配列で取得。

Enumeration getParameterNames() :すべてのパラメタ名を取得



HttpServletRequest

long getDateHeader(String):引数で指定されたヘッダーの値(日付)を取得

String getHeader(String) :引数で指定されたヘッダーの値(文字列)を取得

Enumeration getHeaderNames() :ヘッダー名の集合を取得

Enumeration getHeaders(String) :引数で指定されたヘッダー値の集合を取得

int getIntHeader(String) :引数で指定されたヘッダーの値(数値)を取得

String getMethod() :HTTPリクエストメソッドの種類を取得

String getQueryString() :URLに含まれるクエリストリングをそのまま返す

Cookie[] getCookies() :クライアントのクッキー値を取得



ServletResponse

void setCharacterEncoding(String):文字エンコーディングを設定

void setContetType(String) :コンテントタイプを設定(※1) 

void setLocale(Locale) :ロケールを設定

PrintWriter getWriter() :テキスト出力のためのテキストストリームを取得

ServletOutputStream getOutputSteam():画像などのバイナリ出力のためのバイナリストリームの取得



HttpServletResponse

void sendRedirect(String) :リダイレクトを実行(※4)

void setDateHeader(String,long):ヘッダー(日付)をセット

void setHeader(String,String) :ヘッダー(文字列)をセット(※3)

void setIntHeader(String,int) :ヘッダー(数値)をセット

void setStatus(int)      :ステータスコードをセット(※3)

void addCookie(Cookie) :クライアントにクッキーを保存(※2)





(※1):Stringには"text/plain"・"text/html"・"image/gif"・"application/pdf"・"application/vnd.ms-excel"

     また、"text/html; charset=Windows-31J"で日本語文字エンコーディングの指定が可能

(※2):Cookie cookie = new Cookie("age","25");

res.addCookie(cookie);

(※3):リダイレクトを行う場合は以下のように記述

res.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY); #SC_MOVED_PERMANENTLYはステータスコード301を表す

res.setHeader("Location","http://www.Kronos-jp.net") #第一引数はヘッダー名

(※4):リダイレクトを行う場合は以下のように記述

res.sendRedirect("http://www.Kronos-jp.net");





サーブレットのライフサイクル

①サーブレットクラスのロード :初回のみ

②インスタンス化 :初回のみ

③initメソッドの実行 :初回のみ

④serviceメソッドの実行   :2回目以降のリクエストでも実行される req.getMethod()にて取得した名前からdoXXXに分岐させている

 └→doXXXメソッドの実行  :2回目以降のリクエストでも実行される

⑤destroyメソッドの実行   :コンテナがシャットダウンされる際に実行される

このブログの人気の投稿

ActionFormのresetメソッド

ビルド・パスのエラーが解決されるまで、プロジェクトをビルドできません

ORCLE SQL '_' アンダースコアについて