0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java Silver確実合格を目指すカレンダーAdvent Calendar 2024

Day 21

【Java】サーブレットについてざっくり

Last updated at Posted at 2024-12-20

サーブレットとは

サーブレットはWebコンテナ上で動作するJavaで記述されたプログラムのこと。HTMLタグを埋め込むことで画面を作成できる。

主なサーブレットAPIは以下。

Servletインタフェース

サーブレットの基本となるインタフェースで、全てのサーブレットが実装すべきメソッドを定義している。

GenericServletクラス

Servletインタフェースの実装クラスで、HTTP以外のプロトコルにも対応可能な汎用的な機能を提供する。

HttpServletクラス

GenericServletを継承し、HTTPプロトコルに特化したサーブレットの基盤クラス。GETやPOSTといったHTTPメソッドに対応するメソッドを提供。

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

  1. 初期化
    インスタンス化時に一度実行

  2. サービス処理
    サーブレットに対するリクエストを処理

  3. 要求待ち
    1度実行したサーブレットはWebコンテナに常駐し、次のリクエストを待つ

  4. 消滅処理
    サーブレット停止前に実行される処理

サーブレットのメソッド

service(req,res)

req…リクエスト格納
res…レスポンス格納
サーブレットの処理を記述する。またリクエストによっては後述のdoGetやdoPostを呼び出す。

init(config)

config…サーブレットに関する各種情報を持つオブジェクト
初期化処理を記述する。

destroy()

サーブレットの後処理記述。

getServletConfig()

サーブレットの開発者や著作権などの情報を文字列で返す。

getServletConfig()

初期化パラメータを読みこんだり、サーブレットの実行環境にアクセスしてServletConfigオブジェクトを取得する。

doGet(req,res)

GETオペレーションに対するサーブレット処理を記述。

doPost(res,req)

POSTオペレーションに対するサーブレット処理を記述。

req.setCharacterEncoding("UTF-8")

エンコーディングの設定。

req.getParameter("name")

リクエストオブジェクトから名前で指定したパラメータの値を返す。

req.getParameterValues("name")

リクエストオブジェクトから名前で指定した全てのパラメータの値を返す。

req.getParameterNames()

リクエスト中の全てのパラメータ名を取得。

res.setContentType("text/html,charset=UTF-8")

サーブレットのレスポンスに対して コンテンツタイプ(MIMEタイプ) と 文字エンコーディング を設定する。

res.getWriter()

テキストデータをクライアントに出力するストリームを返す。

pw.println("")

テキストデータをクライアントに出力。printメソッドだと改行はなし。

リクエストオブジェクトとは

ServletRequest を拡張し、HTTPプロトコルに特化した機能を提供するインターフェース。
HTTPリクエストに固有のメソッド(HTTPメソッド、ヘッダー情報、セッション情報など)を利用できる。

setAttribute("fullName",fullName)

リクエストオブジェクトに値を設定。

(String)req.getAttribute("fullName")

リクエストオブジェクトから値を取得。

RequestDispatcher rd = req.getRequestDispatcher("/outhello")

引数のパスにフォワードする。

req.forward(req,res)

リクエストを別のリソースに転送。

セッション管理

セッション
サーバ側でセッションIDを生成し、クライアントにセッションIDを渡す(クッキーやURLパラメータを利用)。
クライアントからのリクエスト時にセッションIDを使用して、適切なセッションデータを関連付ける。

req.getSession()

セッションオブジェクトを返す。引数がtrueだとセッションオブジェクトが無い場合、新規にHttpSessionオブジェクトを生成。falseの場合、セッションオブジェクトが無い場合nullを返す。

session.setAttribute("name",name)

セッションオブジェクトに値を格納。

(String)session.getAttribute("name")

セッションオブジェクトから値を取得。

session.removeAttribute("access")

セッションオブジェクトから値削除。

session.invalidate()

明示的にセッションオブジェクト破棄。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?