サーブレット API の 2.0 から 2.1 への変更点

サーブレット API のバージョン 2.1 では、API のいくつかが改良され、機能が拡張されました。

API の改良

サーブレット API バージョン 2.1 は、前のバージョンに次の改良を加えています。

このセクションでは、これらの改良について説明します。

log メソッドにおける変更点

ServletContext.log(Exception e, String msg) が廃止され、代わりに
ServletContext.log(String message, Throwable t) が使用されます。

このほかに、サーブレット API 2.1 には GenericServlet.log(String message,
Throwable t)
メソッドが含まれます (前のバージョンの
GenericServlet.log(String message も使用できます)。

ServletRequest.getRealPath の廃止

ServletRequest.getRealPath(String path) が廃止されました。このメソッドへの参照を ServletContext.getRealPath(String path) に置換する必要があります。

URL の大文字/小文字の一貫性

サーブレット API 2.1 は、大文字の使用に一貫性を与えるために、次のメソッドについて UrlURL に変更しました。

init メソッドの書き換え

init(ServletConfig config) を書き換えるとき、super.init(config) の呼び出しをコーディングすることによって、GenericServlet が常に config への参照を保存できるようにしておく必要があります。サーブレット API 2.1 には init() メソッド (引数なし) が含まれています。これは super.init(config) の呼び出しを必要としません。

New getSession メソッド

サーブレット API 2.1 には HttpServletRequest.getSession() メソッドが含まれています。このメソッドは HttpServletRequest.getSession(true) の代わりに使用できます。

ステータス コードの設定

HttpServletResponse.setStatus(int sc, String sm) が廃止されました。代わりに HttpServletResponse.setStatus(int sc)
HttpServletResponse.sendError(int sc, String msg) を使用します。

既定の getParameter の動作

サーブレット API 2.1 では、複数の値を持つパラメータについて getParameter(String name) を呼び出すと、常に最初の値が返されます。前のバージョンでは、この動作はサーバーによって異なっていました。

サーブレット参照にアクセスできない

サーブレット API 2.1 では、ServletContext.getServlet(String name)
ServletContext.getServletNames() が廃止されました。

ほかのセッションにアクセスできない

サーブレット API 2.1 では、HttpSession.getSessionContext() が廃止されました。

機能の拡張

サーブレット API 2.1 には、次の機能拡張が含まれています。

このセクションで、これらの機能拡張について説明します。

要求の送信

RequestDispatcher インターフェイスを使用して、処理をほかのサーブレットに転送するか、ほかのサーブレットの出力を呼び出し側のサーブレットの出力に含めることができます。

リソースのアクセス

ServletContext.getResource(String uripath) メソッドを使用して URL オブジェクトを返し、このオブジェクトを使用して実際のリソースにアクセスできます。

ネストされた例外

ServletException 例外をルート例外のラッパーとして使用して、その下の例外を可視化できます。

ServletContext による属性の共有

ServletContext オブジェクトは次のメソッドを追加します。これらのメソッドを使用してサーブレット間で属性を共有できます。

セッション タイムアウトの制御

HttpSession.setMaxInactiveInterval(int interval) メソッドによってセッションの持続時間を制御できます。

バージョン情報のアクセス

ServletContext.getMajorVersion() および ServletContext.getMinorVersion() メソッドを使用してサーブレット API のバージョンにアクセスできます。