ここでは、WebコンテナでServletを実行する際に、考慮すべきことを簡単に説明します。
Servletを利用したアプリケーションの作り方や詳しい説明については、Servletの仕様を参照してください。
HTTPセッションとは、同一のWebブラウザからの複数回のリクエストを、同一のWebブラウザからのアクセスとして処理するための機能です。この機能を利用することで、サーブレットで前回の処理結果を引き継ぐことができ、継続的な処理が可能となります。
アプリケーションでセッションタイムアウトを指定しない場合、セッションは30分でタイムアウトします。
Servlet 3.0では、HTTPセッションに関して、web.xmlやServlet APIで設定可能な項目が増えました。セキュリティ強化のために、セッションCookieにHttpOnly属性を付与すること、トラッキングモードを指定することをお勧めします。詳細は、「5.1 Java EE 6に関するセキュリティ対策」の以下を参照してください。
クロスサイト・スクリプティングによるセッションCookieの漏洩
セッション情報の漏洩
注意
Servlet 3.0では、セッションCookie名を「JSESSIONID」から変更することができるようになりました。Webサーバ連携する場合は、セッションCookie名を「JSESSIONID」から変更しないようにしてください。また、SSLアクセラレータ、負荷分散装置と連携する場合は、振り分け制御に使用するセッションCookie名に注意するようにしてください。
その他のセッションに関する注意事項は、「1.3.2 Webアプリケーションの注意事項」の以下も参照してください。
セッション使用時の注意
エラーページとは、何らかのエラーが発生した場合にクライアントに返されるコンテンツです。ブラウザに表示されるエラーページは、以下の3種類です。
Webサーバのエラーページ(Webサーバ連携している場合)
Webコンテナのデフォルトエラーページ
Webアプリケーションのエラーページ
上記のうちカスタマイズ可能なエラーページは、WebサーバのエラーページとWebアプリケーションのエラーページです。設定方法については、以下を参照してください。
Webサーバのエラーページ
「Interstage HTTP Server 2.2 運用ガイド」の「ディレクティブ一覧」のErrorDocumentを参照してください。
Webアプリケーションのエラーページ
web.xmlで設定できます。詳細は、Servlet/JSPの仕様を参照してください。
次に各エラーページが使用される契機について説明します。
以下の場合にエラーページが使用されます。
要求されたリクエストURLに誤りがある場合
Webサーバコネクタが、Webコンテナに対する通信で、送受信タイムアウトを検知した場合や、Webコンテナのダウンを検知した場合
Webサーバコネクタでエラーが発生した場合
リクエストがWebコンテナで処理された場合は、このエラーページは表示されません。
以下の場合にエラーページが使用されます。
WebアプリケーションでExceptionやErrorが発生する、またはjavax.servlet.http.HttpServletResponse#sendError(int)メソッドを実行し、かつ対応するエラーページが設定されていない場合
リクエストに不備があり、Webアプリケーションでの処理が開始される前にWebコンテナがクライアントにレスポンスを送信する場合
Webアプリケーションに不備があり、Webアプリケーションの初期化や実行に失敗した場合
詳細は、Servletの仕様を参照してください。
以下の場合にエラーページが使用されます。
WebアプリケーションでExceptionやErrorが発生する、またはjavax.servlet.http.HttpServletResponse#sendError(int)メソッドを実行し、かつ対応するエラーページが設定されている場合
詳細は、Servletの仕様を参照してください。
注意
エラーページに関する注意事項については、「1.3.2 Webアプリケーションの注意事項」の以下を参照してください。
ErrorやExceptionについて
エラーページについて
welcome fileとは、リクエストされたURIがファイル名でない場合に表示するファイルのことです。welcome fileがない場合は、Webコンテナはステータスコード404(Not Found)を返却します。
Java EE 6のWebコンテナは、デフォルトで以下の3種類のwelcome fileが設定されており、上から順番に適用されます。
index.html
index.htm
index.jsp
welcome fileは、web.xmlで変更することができます。詳細は、Servlet/JSPの仕様を参照してください。
注意
welcome fileをweb.xmlでカスタマイズする際、引き続き上記3つのファイルをwelcome fileとして利用する場合は、web.xmlで明に上記ファイルを指定してください。
Servlet 3.0で、ファイルアップロード機能が追加されました。ここでは、ファイルアップロード機能を使用する上での注意事項を記載します。
注意
送信するファイルのサイズのバイト数の上限は、max-post-size-bytesプロパティでは有効になりません。サーブレットの@MultipartConfigアノテーションでmaxFileSizeを指定、またはweb.xmlで<servlet> - <multipart-config> - <max-file-size>を指定してください。
@MultipartConfigアノテーションのfileSizeThresholdや、web.xmlの<servlet> - <multipart-config> - <file-size-threshold>で指定した値よりもサイズが大きいファイルのアップロードが行われる場合、locationに指定した場所に一時ファイルが作成されます。
ファイルのアップロード中にブラウザを閉じるなどしてファイルのアップロードを中断した場合、一時ファイルが残存する場合があります。このファイルは後に自動的に削除されますが、自動的に削除される前にプロセスが停止した場合には、ファイルが削除されず残存します。この場合は、手動で以下の一時ファイルを削除するようにしてください。
プレフィックス「upload」、拡張子「.tmp」のファイル