サーブレットの本体内に独自のメソッドを作成するとどうなりますか?サーブレットコンテナはそれを処理しますか?はいの場合、どのように?いいえの場合、なぜですか?
3 に答える
いいえ、サーブレットはブラウザによって呼び出されるカスタムHttpメソッドをサポートしていません。
サポートされているメソッドについては、サーブレット2.5仕様の第2章をお読みください。
http://download.oracle.com/otndocs/jcp/servlet-2.5-mrel2-eval-oth-JSpec/
はいサーブレットコンテナはカスタムHttpメソッドをサポートしています。anyメソッドが呼び出されると、コンテナーはservice()メソッドを呼び出します。また、GET、POSTなどの標準のHttpメソッド以外のhttpメソッドのHttpServletResponse.SC_NOT_IMPLEMENTEDステータスコードを返すHttpServlet.service()メソッド。
カスタムhttpメソッドが必要な場合。service()メソッドをオーバーライドし、HttpServletRequest.getMethod()を使用してメソッドを取得し、カスタムメソッドを呼び出します。
例の場合、
public class CustomMethodServlet extends HttpServlet{
public void service(HttpServletRequest req, HttpServletResponse res) {\
if(request.getMethod().equals("foo")){
//invoke your custom method
doFoo(request,response);
}else {
super.service(request, response);
}
}
public void doFoo(HttpServletRequest req, HttpServletResponse res) {
//implement your custom method
}
}
サーブレットの上記のメソッドは、foo
httpメソッドを使用して呼び出すことができます。
サーブレットではなく、JSPページを意味しているように聞こえます。サーブレットはJavaクラスであり、本体はありません。サーブレットには、サービスメソッドとメソッドおよびその他のメソッドがあります。Javaは、別のメソッド内にメソッドを作成することをサポートしていません。