- PR -

getRequestDispatcher("パス")がよくわかりません。

投稿者投稿内容
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2003-08-13 10:37
引用:

sc.getRequestDispatcher("/jsp/test01.html").forward(request,response);
は/jsp/test01.htmlや/first/jsp/test01.htmlなどやりましたが駄目でした><



駄目でしたとは?
通常のエラーとしては「404 Not Found」か「500 Internal Server Error」
のどちらかだとは思いますが、それによって対処も異なります。
まずは、「駄目でした」だけではどのような状態になっているのかわからないので、そのあたりの説明をもう少し詳しくした方が良いですよ。

引用:

後、getServletContext().getRealPath("仮想パス")の中身を実際にブラウザに出力はできますか?



amnakyさんが書かれているように
System.out.println(getServletContext().getRealPath("仮想パス"));
でもいいし、
サーブレットの出力ストリームを使って、
PrintWriter out = response.getWriter();
out.print(getServletContext().getRealPath("仮想パス"));
とやればブラウザにも出力されます。
taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-13 17:25
[/quote]
とありますが、
[http://localhost:8080/first/jsp/test01.html]
では見れていますか?

上記で見れなかったです。確認した所test1.htmlになっていました。
小さなミスですが、本当にみなさんお騒がせしました。

米山@クロノスさん、エラーの方は説明不足でしたね。
これから気をつけます。

みなさん有難う御座いました。


taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-14 11:35
みなさんお世話になっています。
またまた、質問です。

現在やってる事はスレッド名「ServletからJSPにパラメータを渡す方法について」
と同じ事なんですが、login.htmlファイル→サーブレット→login.JSPでエラーメッセージを出力
しています。

サーブレットでおくる
//JSPファイルにパラメータを送る為の準備
request.setAttribute("error_message","パスワードが正しくありません");
//JSPファイルに取得した文字列を渡す
sc.getRequestDispatcher("/jsp/login.jsp").forward(request,response);

JSPで受け取る
//エラーメッセージを出力
String message = request.getAttribute("error_message").toString();
//初アクセスか判定
if(message != null){
out.println(message);
}

htmlファイル→サーブレット→JSPではうまく行っています。
それをlogin.JSP→サーブレット→login.JSP (login.jspは同じソース)
でしたいのですが上記のソースではうまくいきません。
login.JSPを直接ブラウザでアクセスすると
Error: 500
内部のサーブレットのエラー:
が出力されます。

解決法としてサーブレット側でgetRequestDispatcher("/login.jsp?xxx=xxx")で発行
jspでgetParameterにするしか解決方法はないのでしょうか?
わらび
ベテラン
会議室デビュー日: 2002/08/30
投稿数: 53
投稿日時: 2003-08-14 12:38
こんにちは。わらびです。

>JSPで受け取る
>//エラーメッセージを出力
>String message = request.getAttribute("error_message").toString();

最初に、ここでNullPointerExceptionで死んでるんでしょう。

getParameter云々は関係ありません。
taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-14 15:09
わらびさんレス有難う御座います。

String message = request.getAttribute("error_message").toString
で何か文字列がとれないとエラーになると言うことでしょうか?

上記ができないようでしたらサーブレットからURL?XXX=XXXでメッセージを飛ばしてJSP側で
getParameterを利用してとるようにします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-08-14 15:41
takaさんの書き込み (2003-08-14 15:09) より:
>String message = request.getAttribute("error_message").toString
で何か文字列がとれないとエラーになると言うことでしょうか?

なぜエラーになるのかわかっていますか?
見た限りでは、
String message = (String)request.getAttribute("error_message");
に変更すれば動くのではないかと思いますが。
taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-14 16:13
ukさんレスありがとうです。
なぜ、エラーになるのかよくわかりません。
JAVAははじめてで勉強中です。よく分かっていませんが
一ヶ月でグループウェアを完成させないといけないので
機能を寄せ集めてやってる感じです。
覚えてから開発したいのですが、そうはいかない所が辛いです。
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-08-14 21:43
困ったときは、ログを活用しましょう。
TOMCAT_HOME/logs/の中に有効な情報がはいっています。

catalina.out はコンソール表示でstarckTraceしているならデバッグに有効でしょう。
hostname_log~~.txt の情報もデバッグに重宝すると思います。

その中で taka さんがつくったサーブレットやJSPの エラーライン番号が
表示されると思いますので、そのあたりを徹底的につぶしていってください。

何事もやっつけ仕事では後が苦しくなるとオモイマスヨ。

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