
こんにちは。
JSPの呼び出しについて質問です。
サーブレットで
RequestDispatcher dispatcher = req.getRequestDispatcher("/jsp/java.jsp");
dispatcher.include(req, res);
としてJSPファイルを呼び出そうとしているのですが、うまくいきません。コンパイルは通ります。
dispatcher.include(req, res);
の部分で例外処理にいってるのでそこがおかしいようですが。urlの指定もjspファイルの内容も何度も確認したのですがミスはないみたいで原因がわかりません。
またTomcatのログファイルlocalhost_logを見ると
2002-07-11 16:05:35 ApplicationDispatcher[/DB] サーブレット jsp のServlet.service()は例外を投げました
という文が出力されています。
No.3ベストアンサー
- 回答日時:
>DOS画面に大量の文字がでます
それがスタックトレースです。一番上の行が例外を発生したメソッドで、その次の行がそれを呼んだメソッド、その次の行が……という構造です。
たいていはDOS窓のスクロールバーで一番上の行まで見えますが、だめなようですね。
printStackTrace()は引数にストリームを取ることができるので、No.2のご回答を試してください。
また、JSPの記述に問題がないことを再確認するために、dispatch先にJSPではなくHTMLファイルを指定してみてください。それで例外が出なくなればJSPの問題ということに。
やはりJSPの方に問題があったようです。
違うマシンで試してみたところそっちでは正常に動いたのでもう一度環境を一からインストールし直したら正常に動きました。ApacheやTomcatを何度かインストールし直していたので少しずつ設定がおかしくなっていたのかも。エラーコードを見ないとわからなかったと思います。
アドバイス本当にありがとうございました。
No.2
- 回答日時:
JSPのコンパイルエラーということは考えられませんか?
もう少し問題を詳しく分析するために、サーブレットにこんなメソッドを入れて確認してみてはいかがでしょうか。
private void writeError(HttpServletResponse res, Exception e) {
PrintWriter writer = null;
try {
writer = res.getWriter();
}
catch (Exception ex) {
writer = new PrintWriter(System.out);
}
writer.println("<h4>例外が発生しました</h4>");
writer.println("<hr>");
if (e != null) {
writer.println("<pre>");
writer.println(e.getClass() + ":" + e.getMessage());
e.printStackTrace(writer);
writer.println("</pre>");
}
}
このメソッドを追加しておいて、
try {
dispatcher.include(req, res);
}
catch(Exception e) {
writeError(response, e);
}
とかしておけば、ブラウザにエラーを出せますよ・・・(たぶん)。
No.1
- 回答日時:
もし表示をJSPに移すのが目的であれば、include()ではなくforward()になりますが、それは大丈夫でしょうか。
私はforward()しか使ったことがないのですが、include()は次の例のように「サーブレットの出力ストリームに割り込む」ようです。
http://java-house.jp/ml/archive/j-h-b/047496.html
include()で良いとすれば、そこで起きている例外をもっと詳しく見てみましょう。try{}catch{}で囲んでprintStackTrace()してはどうでしょうか。
この回答への補足
forward()でも特に問題はないのですがそちらでやっても同じような状態になります。それと初歩的な質問で大変申し訳ないのですがprintStackTrace()したあとどうやってそれを確認するのでしょうか?私はTomcatを使っているのですが起動をかけた時にでるDOS画面に大量の文字がでますがあれを見るのでしょうか?もしそうなら画面に表示しきれない部分はどうやって見るのかも教えていただければうれしいです。
補足日時:2002/07/11 17:29お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
アロー関数のIE対応にpolyfill...
-
nullで、return出来るのはどん...
-
数字か文字列かを判定する関数
-
C#の捕捉されない例外処理の対...
-
VBA 400エラー 1004エラー
-
ファイルダイアログを開いた時...
-
Timestamp型への変換について(J...
-
タトゥーや墨を入れる人の共通点
-
eclipse-Tomcatでのデバッグに...
-
関数内の変数に<summary>コメン...
-
エクセルVBAで、条件に一致する...
-
中学のクラス数
-
javascriptからjavaを呼び出したい
-
【sendkeysメソッドが動かずに...
-
Excelで =EMBED("Acrobat Docu...
-
引数で日付を2つ与え、その間の...
-
JavaScriptからJAVAクラスを呼...
-
サーブレットコンテキストの意...
-
UMLのクラス図はmain()も含むん...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
Timestamp型への変換について(J...
-
C#の捕捉されない例外処理の対...
-
VB.Net Object型 空かどうか
-
0除算の例外処理ができない!!...
-
VBA Evaluate関数 型が一致しま...
-
VB.NETで16進数が正しいかどう...
-
数字か文字列かを判定する関数
-
【JAVA】与えられた金額を貨幣...
-
時間の取得
-
文字列からダブルクオートの削除
-
VC++におけるCStringの変換
-
String型の日付(2005/11/25)の...
-
C# マルチスレッドにおける例外...
-
nullで、return出来るのはどん...
-
javaのコンパイルエラーが解決...
-
アロー関数のIE対応にpolyfill...
-
Excelでのエラー
-
サーブレットからJSPの呼び出し...
-
連続する「\\」をひとつの「\\...
おすすめ情報