- 締切済み
サーブレットで入力エラー時にエラー画面の出力
JAVAサーブレットで、わからないことがありお伺いいたします。 名前、タイトル、メッセージが入力されていないと、エラー画面になるように設定したと思っています。 ソースが3つあり、 (1)拡張子jspのソース ここでBBSの投稿フォームおよび投稿後のフォームの呼び出し (2)拡張子javaのソース フォームから入力された内容の取得および「bean」へ登録 (3)拡張子javaのソース 投稿内容の値の保持および取り出し となっています。 (2)に if(!isEmpty(name) && !isEmpty(subject) && !isEmpty(message) ){ // beanにフォームデータをセット があるので下記を記述しました。 }else {ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/error.jsp"); rd.forward(request, response); } それでも、どれか一つを抜かして「投稿」ボタンを押しても、元の初期画面に戻ってしまいエラー画面が出ません。 記述の仕方がいけないのでしょうか。 宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- pcbeginner
- ベストアンサー率46% (261/560)
javax.servlet.http.HttpServlet の親の javax.servlet.GenericServlet に log(String msg) が実装されていますので、 javax.servlet.http.HttpServlet を継承していれば何もしないで log("処理開始:引数hoge="+hoge); のように使えます。 出力ファイルは…環境に環境によって違うでしょうが、 自分の場合は Tomcat 4.1.31 で、examplesに試し用のサーブレットで試したら [Tomcatのインストールディレクトリ]\logs 以下に localhost_examples_log.2005-05-16.txt というファイルで出力されていました。 ご参考までに…。 log4jについては http://www.techscore.com/tech/Java/index.html#J2EE を参考になさるといいとお思います。
- pcbeginner
- ベストアンサー率46% (261/560)
ログですが、出せますよ。 サーブレットならHttpServletクラスを継承しているはずなので、 logメソッド が実装されているはずです。 (…今手元にサーブレットのjavadocがないので「はず」で回答しています…。) 出力ファイルは…記憶があやふやですが、 Tomcatのインストールディレクトリの下にlogというディレクトリがあるので、そこに出力されたような… それか、初期画面に表示しちゃうとか…。(^^;A log4jというログ出力のパッケージがありますので、そちらを使ってみるのもいいかもしれません。 (log4jの使い方覚えないといけませんが…。) とりあえずサーブレットのjavadocを調べてlogメソッドを使用するのが1番てっとり早いと思います。
- pcbeginner
- ベストアンサー率46% (261/560)
(2)のisEmpty() がどういう判断をしているか? name、subject、messageがどうなっているか? ですね。 name,subject,messageがStringと仮定しますが、 nullだったらtrueを返すところ、実際には""(長さ0の文字列)が入っているためfalseを返していたりしませんか? まずは問題の切り分けですね。 デバッガを使用しているのなら、ステップ実行などを行って、 if(!isEmpty(name)&&!isEmpty(subject)&&!isEmpty(message)){ A }else{ B } Aに入っているのか、Bに入っているのか? (デバッガがなければログを出力してみる) isEmpty()で引数の値をログに出力してみるなどして、 どこにどういう値が入ってきて、どこを通っているか? を探ってみるといいと思います。 念のためをいうと、 name,subject,message の値を取得したところからログなどに出した方がいいかもしれませんね。
補足
お返事ありがどうございます。(だいぶ遅れてすみません。) ログの出し方はどうすればいいのでしょうか? 今現在、j2sdkとTomcatしかインストールしていませんが、それでも出せますでしょうか?
お礼
遅くなり申し訳ありません。 お調べいただきありがとうございます。 log4jでログを確認したいと思います。