- PR -

共通エラー処理

1
投稿者投稿内容
タマ
ベテラン
会議室デビュー日: 2004/08/08
投稿数: 56
投稿日時: 2004-08-28 09:00
ファイル構成以下のようで

FILEA・・・servlet1.java
・・・servlet2.java
・・・servlet3.java

ソースは以下のようになっていますが
各ファイルでエラー時には共通ページに飛ぶ仕様にしたいのですがなにかいい方法
はないでしょうか。


catch内でできればエラー処理用のクラスにわたして
getRequestDispatcherを行いたいのですが、、、

宜しくお願いします。
=============================================================
public class Servlet1 extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
getServletContext().getRequestDispatcher("/OK.jsp").forward(request, response);
}catch (Exception e){
getServletContext().getRequestDispatcher("/Error.jsp").forward(request, response);
}catch(Exception e2){
e2.printStackTrace();
}

}
}
}
=============================================================
public class Servlet2 extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
getServletContext().getRequestDispatcher("/OK.jsp").forward(request, response);
}catch (Exception e){
getServletContext().getRequestDispatcher("/Error.jsp").forward(request, response);
}catch(Exception e2){
e2.printStackTrace();
}

}
}
}
=============================================================
public class Servlet3 extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
getServletContext().getRequestDispatcher("/OK.jsp").forward(request, response);
}catch (Exception e){
getServletContext().getRequestDispatcher("/Error.jsp").forward(request, response);
}catch(Exception e2){
e2.printStackTrace();
}

}
}
}
ぼんじぃ
ベテラン
会議室デビュー日: 2004/05/21
投稿数: 70
投稿日時: 2004-08-28 09:13
3つのServletのスーパークラスを作ってあげればいいのではないでしょうか?
スーパークラスでディスパッチするようなメソッドを作っておいて、3つのServletではそのメソッドを呼ぶだけにするとか・・・

またはコードの中にディスパッチ先を埋め込みたくないと言うことであればContextの初期パラメータやサーブレットごとの初期パラメータにディスパッチ先を設定しておき、サーブレットでそれらを読み込んめばいいとか・・・
この場合だとweb.xmlを変更するだけディスパッチ先を変更できるので便利かと思いますが・・・?

いかがでしょうか?
タマ
ベテラン
会議室デビュー日: 2004/08/08
投稿数: 56
投稿日時: 2004-08-28 19:50
ありがとうございます。
その方法を使ってみたいと思います。

ちなみに自分で以下のようなことをやってみたのですがエラーになってしまいます。
どう変更したらいいのでしょうか?

宜しくお願いします。




public class Servlet3 extends HttpServlet{
private transError transError = new transError();

public void doGet(HttpServletRequest request, HttpServletResponse response){
try{
getServletContext().getRequestDispatcher("/OK.jsp").forward(request, response);
}catch (Exception e){
transError.send();

}catch(Exception e2){
e2.printStackTrace();
}


エラー処理====================================================================================
public class transError{

public void send(){
getServletContext().getRequestDispatcher("/Error.jsp").forward(request, response);
}

}
=============================================================================================
ちょま吉
大ベテラン
会議室デビュー日: 2004/08/04
投稿数: 112
投稿日時: 2004-08-28 23:31
transErrorクラス内でgetServletContext()は使用できません。
ですので、send()メソッドの引数にコンテキストを渡すようにしてみてはいかがでしょうか?

[ メッセージ編集済み 編集者: ちょま吉 編集日時 2004-08-29 22:44 ]
1

スキルアップ/キャリアアップ(JOB@IT)