Strutsでのセッションの確認

操作を行っているユーザが認証済かどうか。Action#execute()の先頭でセッションに格納した情報からログイン済かどうかを判定するメソッドを呼んでいた。
これで大丈夫と思っていたが、ログインしていない状態でURLを直接実行されると案外とエラーになってしまう。

  • jspのURLを直接指定された場合、空の画面が表示されてしまう。→web.xmlで*.jspを直アクセス禁止にする。
  • ActionのURLを直接指定された場合、Action#execute()にたどり着く前にValidatorForm#validate()あたりでエラーになってしまう。ブラウザに真っ白な画面が表示され、ソース表示するとの途中でHTMLが途切れていたりする。→ValidatorForm#validate()の先頭でもセッションの確認を行うようにする。

ValidatorForm#validate()で例外を投げると、StrutsのExceptionHandlerでは処理されずに、tomcatのServer Error 500になってしまうため、500エラーの画面もちゃんと作っておく必要がある。(403とか500などの画面はどのみちちゃんと作っておく必要があるから、ちょうど良かった。)