javax.http.servlet.HttpServlet
クラスを拡張して、私の使用のためにいくつかのメソッドをクラスに追加しました。私のアプリケーション用のすべてのサーブレットはこの新しいクラスを拡張します。メソッドの最初と最後で何らかの作業を実行するために親クラスメソッドをオーバーライドするにはどうすればよいですか?
public class MyCustomServletClass extends HttpServlet{
protected void startWork(){
// do some stuff
}
protected void finishWork(){
// do more stuff
}
}
これらの2つの方法は、すべてのHttpServlet要求方法(例えばdoGetメソッド、doPostメソッド、等)の開始/終了時に実行される次のとおり、このクラスの最低限のバージョンがあります。ここで私は私のカスタムMyCustomServletClassを使用して作成することができますサーブレットの単純な例です:
public class SomeServlet extends MyCustomServletClass{
protected void doGet(HttpServletRequest request, HttpServletResponse response){
this.startWork();
// some servlet specific work here
this.finishWork();
}
}
だから私の質問は、このです:doGetメソッドが自動的にこれらの2つの方法を実行させるために、Javaのいくつかの方法がありますメソッドの開始/終了?
私が持っているすべてのサーブレットで、すべてのdoGet、doPostなどでstartWork()およびendWork()を手動で呼び出す必要がないようにするための良い方法を見つけようとしています。私はMyCustomServletClassを拡張し、doGetを実装し、startWork()をバックグラウンドで呼び出し、endWork()をバックグラウンドで呼び出すことができます。
理想的には、MyCustomServletClassを拡張し、私のサーブレットでは、doGetメソッドは、単純に次のようになります。
protected void doGet(HttpServletRequest request, HttpServletResponse response){
// doGet specific work here
}
毎回手動で私の2つの親のメソッドを呼び出す必要がなく。
コンストラクタでstartWork()を実行できますが、デストラクタでendWork()を実行するためにサーブレットのライフサイクルを十分に制御できないと思います。
doGetの開始時と終了時にこれら2つのメソッドを自動的に実行する方法はありますか?
'startWork'と' finishWork'の間に抽象関数doWorkを呼び出すことを考えてみましょう。 –