久しぶりに定時後に図書館行ったらとても楽しかったのでまとめる(2日目)
Javaサーバサイドプログラミング
今日も就業後に図書館に行ってきて、とても楽しかった。今日は昨日の続きである【Javaサーバサイドプログラミング】を読んできた。大体半分くらいは読めたので、まとめる。
Servlet
Servletが受け付けるrequest / response は、Servlet主体で考えるのが良い。誰に対してrequest / responseなのかを考えるのが必要。
Servletは、初回リクエスト時に1度だけインスタンス化されるので、フィールド(クラス宣言の直下)に変数を宣言するとユニークIDを作ることが出来る。
クライアントが複数の場合でも、Servletがインスタンス化されるのは初回の一回だけ。しかし、それではクライアントの区別が出来ずに返却に困るので、スレッドで紐づけている。1クライアント1スレッド生成される。これはメモリの省力化のためで、インスタンスを生成するよりもスレッドを生成した方がメモリの省力化が出来るとのこと。
Static(初期化)
Static(初期化)は、クラスがロードされた際に呼び出される。だから、戻り値は受け付けないしメソッド名も定義しない(自動で呼ばれるため、メソッド名は必要ないし戻り値を返す相手もいないもんね)。コンストラクタよりも先に呼び出される。ここで疑問なのが、メソッドの中にStatic変数を書いた場合でもコンストラクタよりも先に呼び出されるのか。これは後程実験してみ要と思う。
セッション
HTTPは要求と応答だけのプロトコルなので、前回の情報を引き継ごうと思ったらWebサーバー側で情報を保持しておかないといけない。そこで使われるのがセッション。セッションIDという識別番号でクライアントを識別する。
セッションを保持する方法として、マネージドBeanなるもののインスタンスを保持できるように設定するアノテーションがある。
- @SessionScorped
- @ApplicationScoped
- @CoversationScoped
EJBは今度勉強しよう。近いうちにまた図書館にいこう。