- PR -

サーブレットからJSPへの制御の移動

投稿者投稿内容
hid
会議室デビュー日: 2004/01/23
投稿数: 7
投稿日時: 2004-01-23 18:24
現在サーブレットでsetAttributeしてからJSPに制御を移し、値を取得しようと考えています。
制御を移すためにgetRequestDispatcherを使用しているのですが404エラーとなってしまいます。

現在のソースは
ServletContext sc = getServletContext();
RequestDispatcher disp = sc.getRequestDispatcher("/www/ank/Tea_admin.jsp");
disp.forward(request, response);
です。また
RequestDispatcher disp = request.getRequestDispatcher("www/ank/Tea_admin.jsp");
disp.forward(request, response);
として実行したところ
/servlet/www/ank/Tea_admin.jsp
となりました。

コンテキストパスは
<Context path="/www" reloadable="true" docBase="D:\java\question\www" workDir="D:\java\question\www\work\org\apache\jsp" />
で、JSPは
D:\java\question\www\ank
に格納しています。

getRequestDispatcherの引数についてアドバイスいただけないでしょうか
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-01-23 19:04
こんにちは。米山@クロノスです。

ServletContextからRequestDispatcherを取得する場合、getRequestDispatcherメソッドの引数にはコンテキストからの絶対パスを指定しなければなりません。
またHttpServletRequestからであれば、getRequestDispatcherメソッドの引数は相対パスを指定します。

hidさんの、そのサーブレットのコンテキストは「www」ですよね?
hid
会議室デビュー日: 2004/01/23
投稿数: 7
投稿日時: 2004-01-23 19:25
>米山さま
早速のご回答ありがとうございます。

RequestDispatcher disp = request.getRequestDispatcher("ank/Tea_admin.jsp");
disp.forward(request, response);
としまして試しましたところ
The requested resource (/servlet/www/ank/Tea_admin.jsp) is not available.
とのメッセージが出ました。
System.out.println(request.getServletPath());
でサーブレットパスを見ると
/servlet/question
とパッケージ名が出たのですが何か関係はありますでしょうか。

また、
ServletContext sc = getServletContext();
RequestDispatcher disp = sc.getRequestDispatcher("/ank/Tea_admin.jsp");
disp.forward(request, response);
に関しましても同様に404エラーでした。
The requested resource (/ank/Tea_admin.jsp) is not available.

開発にEclipseを使用しておりまして
アプリケーションURI、WEBアプリケーションのルートとするサブディレクトリが共に「/www」となっています。コンテキストはwwwで間違いないと思います。

申し訳ございませんがよろしくお願いします。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-01-23 19:49
not available のメッセージが出ますか。
一度Tomcatを再起動してみてください。で、もう一度

コード:
RequestDispatcher disp = sc.getRequestDispatcher("/ank/Tea_admin.jsp"); 
disp.forward(request, response); 



を試すとどうなりますか?
hid
会議室デビュー日: 2004/01/23
投稿数: 7
投稿日時: 2004-01-23 20:08
>米山さま

ご回答ありがとうございます。
ご指摘いただいたTomcat再起動後実行してみましたが同じように

The requested resource (/servlet/www/ank/Tea_admin.jsp) is not available.

とのことでした。
いかがでしょうか。回答お待ちしています。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-01-23 21:12
引用:

hidさんの書き込み (2004-01-23 20:08) より:
ご指摘いただいたTomcat再起動後実行してみましたが同じように

The requested resource (/servlet/www/ank/Tea_admin.jsp) is not available.

とのことでした。



ところで「ank」以下に置いたJSPファイルをブラウザのアドレスバーから直接リクエストして表示できますか?
実行できるのであれば、その際のアドレスはどうなっています。
hid
会議室デビュー日: 2004/01/23
投稿数: 7
投稿日時: 2004-01-23 21:35
>米山さま

ご回答ありがとうございます。
アドレスバーへ
http://localhost/www/ank/Tea_admin.jsp
と打ち込み、表示することができました。
ただ、値を受け取らなければ表示はできませんので処理が走っただけですが・・・。

いかがでしょうか。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2004-01-24 04:55
米山@クロノスです。

引用:

hidさんの書き込み (2004-01-23 21:35) より:
http://localhost/www/ank/Tea_admin.jsp
と打ち込み、表示することができました。



であれば、
コード:
getRequestDispatcher("/ank/Tea_admin.jsp")



の指定でダメですか?
scでもrequestでも、どちらでもいけると思いますが。。。

引用:

ご指摘いただいたTomcat再起動後実行してみましたが同じように

The requested resource (/servlet/www/ank/Tea_admin.jsp) is not available.

とのことでした。



これは
コード:
request.getRequestDispatcher("www/ank/Tea_admin.jsp")



のようになっていませんか?

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