ひとつのビジネスクラス、または全てのビジネスクラスに共通な処理は、まとめて作成することができます。
プリプロセス
Preprocessorを実装すると、ビジネスクラスの実行前にpreprocessメソッドが呼び出されます。 Preprocessorはビジネスクラス、セションクラス、アプリケーションクラスで実装可能です。ビジネスクラスで実装した場合はそのクラスのメソッドが実行される前に、セションクラスまたはアプリケーションクラスで実装した場合は全てのビジネスクラスのメソッドが実行される前に、preprocessメソッドが呼ばれます。ビジネスクラスで使用するGenericHandlerはPreprocessorを実装しています。preprocessメソッドをオーバライドして処理を追加できます。
public class SampleHandler extends GenericHandler { public int preprocess(DispatchContext context) { return Preprocessor.EVAL; } }
例えば、ログインされていない場合にのみログイン画面を表示するような場合に、セションのpreprocessメソッドが利用可能です。
ポストプロセス
Postprocessorを実装すると、ビジネスクラスの実行後にpostprocessメソッドが呼び出されます。 PostprocessorはPreprocessorと同様に、ビジネスクラス、セションクラス、アプリケーションクラスで実装可能です。ビジネスクラスで実装した場合はそのクラスのメソッドが実行されたあとに、セションクラスまたはアプリケーションクラスで実装した場合は全てのビジネスクラスのメソッドが実行されたあとに、postprocessメソッドが呼ばれます。共通な画面の設定などの場合にはpostprocessメソッドが利用可能です。インタフェースではObjectを返却する必要がありますが、後述のファイルダウンロードアプリケーション以外ではnullを返却します。また、HTTPレスポンスのContent-lengthヘッダは、Postprocessメソッドで設定する必要があります。
public class SampleHandler extends GenericHandler { .... public Object postprocess(DispatchContext context, Object result) { .... context.setResponseBean("head", headBean); return result; } }
Postprocessorを利用する場合は、GenericHandlerから派生したクラスでなければ、handleExceptionメソッドも実装する必要があります。handleExceptionメソッドの詳細は“4.2 エラー処理”で説明します。