Java読書会BOF「基礎からのサーブレット/JSP 第5版」を読む会 第3回議事録

[ 戻る ]


========================================================
Java読書会BOF「基礎からのサーブレット/JSP 第5版」を読む会 第3回
========================================================

.. csv-table:: 開催概要

  "日時", "2024年4月27日 10:00 - 17:00"
  "場所", "川崎市教育文化会館 第3会議室"
  "出席者(敬称略)", 高橋(徹)、吉本、高橋(智)(書記)"

Part 1: 基礎知識編
=================

Chapter09: いろいろな画面遷移
==========================
* P139 doGetメソッドやdoPostメソッドはprotectedとしてオーバーライドすべきだが、もちろんpublicでもよい

Chapter10: フィルタの作成
=======================

10-02 フィルタの作成方法
---------------------
* P141 「これらのメソッドは3つともオーバーライドする必要があります。」は、間違い!!
  * Filterインターフェースは、initとdestroyは空のでデフォルト実装を持っているので

* P142 「void init(...」は「public void init(...」の間違い
* P142 「void destroy(...」は「public void destroy(...」の間違い
* P143 「void doFilter(...」は「public void doFilter(...」の間違い

Part 2: 応用編
=============

Chapter11: サーブレットの詳細
==========================

11-02 シングルインスタンス・マルチスレッド
-------------------------------------
* P159 「シングルインスタンス・マルチスレッド」という用語は、サーブレットの仕様書で説明・明記されているか?
  * そんな用語は一切記載されていない!!

* P161 「1つのブラウザ、たとえばChromeで...カウンタの値が不適切になりません。」は、間違い!!
  * Safari, Firefoxでは起きない
  * そもそも「Chromeで全く同じURLにアクセスする際に、先行するリクエストのレスポンスが返る前には、後続のリクエストがStalledになる」という動作があるだけ
    * Chrome内のキャッシュのロックが関係している
    * もちろん、異なるクエリーパラメータを追加したりして同時にアクセスすれば当然不適切になる

Chapter12: HTTPのリクエストとレスポンス
====================================

12-02 レスポンス
---------------
* P173 サーブレットのdoGet/doPost内でsetStatusメソッドを呼び出さなかった場合の、サーブレットのデフォルトのステータスコードは?
  * 200
  * どこでセットされているのか?
    * サーブレットコンテナ内で200にセットされた状態でdoGet/doPostが呼ばれる

Chapter14: データベース
======================

14-03 データベースアクセスの手順
----------------------------
* P201 「List | 14-02 All.java」のコードは問題が多すぎる!!
  * 例外発生時に st.close(), con.close() が呼ばれず、コネクションプールに返却されない!!
    * rs.close() も呼ばれていない!!
    * JNDIのInitialContext(Context)の ic.close() も呼ばれていない!!

14-05 商品を登録するサーブレット
----------------------------
* P210 「int executeUpdate」メソッドの戻り値はint型だが、約21億行以上の更新があった場合(delete * from tableなど)は何が返る?
  * オーバフローしたint値か?
  * 何かのデータベースとJDBCドライバで実験してみる
    * 宿題!!

* P212 insert文の実行時にトランザクションはどうなっているのか?
  * JDBCドライバにも依るが、基本的にautoCommitがtrueに設定される
  * H2 Database Engineの場合、context.xmlのJDBCドライバのURLに「;AUTOCOMMIT=OFF(FALSE,ON,TRUE)」を設定する
  * Connection.getAutoCommit()メソッドとConnection.setAutoCommit(boolean)メソッドを自分で責任を持って呼ぶようにする

次回は、P225の「Chapter15 JavaBeansとDAO」から。


[ 戻る ]