- PR -

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

投稿者投稿内容
taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-12 10:20
初体験JAVAサーブレットで環境を作りました。
現在の参考書はやさしいJAVA活用編です。
class path:C:\jakarta-tomcat-3.3.1\webapps\first\WEB-INF\classes
URL: http://localhost:8080/first/servlet/クラスファイル名

jsp path:C:\jakarta-tomcat-3.3.1\webapps\first\jsp
URL:http://localhost:8080/first/jsp/ファイル名.jsp

それでサーブレットからJSP、HTMLファイルへリクエストの転送
を行いたい場合どのようにすれば宜しいのでしょうか?
下記の場合/test01.htmlはどこからのパスになるのでしょうか?

ServletContext sc = getServletContext();
sc.getRequestDispatcher("/test01.html").forward

どうしてもわかりません。初歩的な事だと思いますが宜しくお願いします。
もう、Tomcat上のフォルダにtest.htmlを貼り付けたのですが駄目でした><
/test01.htmlのパスを変更して現在試していますが、まだできていません。
できればしっかりとした意味を理解しておきたいです。
JefutyV2
会議室デビュー日: 2003/06/30
投稿数: 3
投稿日時: 2003-08-12 13:13
ServletContext#getRequestDispatcher()のパラメータはコンテキストルートからの絶対パスで指定します。

sc.getRequestDispatcher("/test01.html")

上記の指定は、webapps/first/test01.htmlを指定していることになります。
taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-12 16:30
Daraemonさん返答有難う御座います。

なるほど、webapps/first/test01.htmlを指定してるんですね。
ちなみに上記のパスを出力する事はできませんか?

もしかしたら変な質問かもしれませんがJAVA3日目の初心者ですので宜しくお願いします。
米山@クロノス
大ベテラン
会議室デビュー日: 2003/06/10
投稿数: 103
お住まい・勤務地: 大阪市淀川区西中島4-13-22 新大阪淀川ビル5F
投稿日時: 2003-08-12 17:12
こんにちは。米山@クロノスです。

> なるほど、webapps/first/test01.htmlを指定してるんですね。
> ちなみに上記のパスを出力する事はできませんか?

getServletContext().getRealPath("仮想パス")
で、実際のパスを取得できます。
taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-12 19:58
米山@クロノスさんレス有難う御座います。
再度すいません。

ServletContext sc = getServletContext();
sc.getRequestDispatcher("/jsp/test01.html").forward

とやって見ましたがリクエストの転送はできませんでした。

通常JSPファイルを見るときは
URL:http://localhost:8080/first/jsp/ファイル名.jsp
で見ることはできています。

Daraemonさんが教えてくれたパスで組み合わせると
例としてgetRequestDispatcher("/jsp/test01.html")は
URL:http://localhost:8080/webapps/first/test01.htmlとなるんでしょうか?

後、getServletContext().getRealPath("仮想パス")の中身を実際にブラウザに出力はできますか?
raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2003-08-12 20:15
sc.getRequestDispatcher("/jsp/test01.html").forward(request,response);
ではないですか?
taka
会議室デビュー日: 2003/08/11
投稿数: 12
投稿日時: 2003-08-12 20:37
Paracheck.class
import javax.servlet.*;
import javax.servlet.http.*;

public class Paracheck extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException{
try{
//フォームデータの取得
String lgid = request.getParameter("loginid");
String pas = request.getParameter("password");

//サーブレットコンテキストの取得
ServletContext sc = getServletContext();

//リクエストの転送
if((lgid.length() != 0) && (pas.length() != 0)){
sc.getRequestDispatcher("/jsp/test01.html").forward(request,response);
}else{
sc.getRequestDispatcher("/jsp/test02.html").forward(request,response);
}
}catch(Exception e){
e.printStackTrace();
}
}
}


test.html
<html>
<head><Title>test</title></head>
<body>
<center><h2>test</h2><hr size="0">
<br><br>
<hr width="500" size="0">
<!--▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼-->
<form action="servlet/Paracheck" method=get>
<br>
id<input type="text" name="loginid"><br>
pass<input type="text" name="password"><br>
<input type="submit" value="送信">
</form>
<br>
<hr size="0">
</body>
</html>

sc.getRequestDispatcher("/jsp/test01.html").forward(request,response);
は/jsp/test01.htmlや/first/jsp/test01.htmlなどやりましたが駄目でした><
amnaky
ベテラン
会議室デビュー日: 2002/09/13
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2003-08-13 10:15
引用:

takaさんの書き込み (2003-08-12 19:58) より:
通常JSPファイルを見るときは
URL:http://localhost:8080/first/jsp/ファイル名.jsp
で見ることはできています。


とありますが、
[http://localhost:8080/first/jsp/test01.html]
では見れていますか?

引用:

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


とりあえずSystem.out.println()で標準出力に出してみるとか。
WindowsならDOS窓に出てくると思います。

[ メッセージ編集済み 編集者: amnaky 編集日時 2003-08-13 10:16 ]

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