- - PR -
共通エラー処理
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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-08-28 09:13
3つのServletのスーパークラスを作ってあげればいいのではないでしょうか?
スーパークラスでディスパッチするようなメソッドを作っておいて、3つのServletではそのメソッドを呼ぶだけにするとか・・・ またはコードの中にディスパッチ先を埋め込みたくないと言うことであればContextの初期パラメータやサーブレットごとの初期パラメータにディスパッチ先を設定しておき、サーブレットでそれらを読み込んめばいいとか・・・ この場合だとweb.xmlを変更するだけディスパッチ先を変更できるので便利かと思いますが・・・? いかがでしょうか? |
|
投稿日時: 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-28 23:31
transErrorクラス内でgetServletContext()は使用できません。
ですので、send()メソッドの引数にコンテキストを渡すようにしてみてはいかがでしょうか? [ メッセージ編集済み 編集者: ちょま吉 編集日時 2004-08-29 22:44 ] |
1
