サーブレット名
サーブレットは、サーブレット名を指定して呼び出します。
サーブレット名は、ファイル名から拡張子(.class)を除いた名前です。
サーブレット名の大文字、小文字は区別されます。
サーブレットの格納先
サーブレットは、以下のどちらかに格納します。
Webアプリケーションのルートディレクトリ/WEB-INF/classes配下
Webアプリケーションのルートディレクトリ/WEB-INF/lib配下のJARファイル
パッケージとして作成されている場合
サーブレット名にはパッケージ名を付加して呼び出します。
パッケージは、サーブレットのソースコードにpackage宣言をすることで作成できます。
パッケージ名org.xxx.zzzz、サーブレット名HelloWorldServletのときは、以下のようになります。
org.xxx.zzzz.HelloWorldServlet |
URLで指定して呼び出す場合
http://サーバホスト名:ポート番号/Webアプリケーション名/servlet/サーブレット名 |
“:ポート番号”は省略できます。省略したときのポート番号は80になります。
HTML文書の中で呼び出す場合
<A HREF="/Webアプリケーション名/servlet/サーブレット名">Click Here</A> |
HTML文書の中に入力フィールド(HTMLのFORMタグ)を作って入力した情報を渡すこともできます。
サーブレットは以下のように呼び出します。METHODはGETも指定できます。
<FORM ACTION="/Webアプリケーション名/servlet/サーブレット名" METHOD=POST> |
サーブレットに情報を渡す方法
サーブレットにパラメタを渡したい場合は、サーブレット名の後ろに次の形式で指定します。
サーブレット名?パラメタ名1=値1&パラメタ名2=値2&・・・ |
また、CGIと同じようにPATH_INFOを使用して、サーブレットにパス情報を渡すことができます。
サーブレット名の後ろに“/”で始まるパス情報を指定します。
サーブレット名/パス情報?パラメタ名1=値1&パラメタ名2=値2&・・・ |
エイリアスによる指定
サーブレット名は、エイリアスで指定することができます。
エイリアスは、“7.5 Webアプリケーション環境定義ファイル(deployment descriptor)”の“7.5.7 サーブレットの属性”(servletタグ)で定義します。
例
エイリアスを使用しない例(サーブレット名での指定)
http://hostname/webapl1/servlet/HelloWorldServlet |
エイリアスを使用した例("HelloWorldServlet"をエイリアス"Hello"で定義)
http://hostname/webapl1/servlet/Hello |
注意
Webブラウザにサーブレットの実行結果が表示されず、ステータスコードやメッセージが表示される場合は、Webサーバの環境設定やサーブレットの呼び出し方法に誤りがあるなどの原因が考えられます。
“第29章 J2EEアプリケーション開発・運用時の異常”を参照して、エラーの原因を取り除いてください。
“WEB-INF/classes”配下と“WEB-INF/lib”配下のJARファイルに同名のサーブレットが存在する場合、“WEB-INF/classes”配下のサーブレットが呼び出されます。
Windows(R)システムでは、指定したサーブレット名の大文字/小文字が間違っている場合、Javaの例外java.lang.NoClassDefFoundErrorが発生します。
この場合、Webブラウザに“500 Internal Server Error”が表示されます。
大文字/小文字が間違っていることを伝えるエラーページや“404 Not Found”を伝えるエラーページを作成し、“7.5 Webアプリケーション環境定義ファイル(deployment descriptor)”の“7.5.12 エラー発生時のリソース”(error-pageタグ)で定義することをお勧めします。