プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
JSP/サーブレットを使用してwebアプリケーションを作成しています。

タイトルの通りRequestDispatcher.forwardメソッドで遷移する際のURL
についてうまくいかず、原因がわからない為質問させて頂きます。
ご教授宜しくお願い致します。
Aproject/jsp/login.jsp
Aproject/jsp/top.jsp
Aproject/WEB-INF/src/servlet/Login.java
という3つのファイルを使用しています。

login.jspにて<form action="../Login" method="post">で
Login.javaサーブレットにIDとパスワードを渡し、
サーブレットで認証を行ったあと
RequestDispatcher.forwardメソッドにて以下のように
遷移するようになっています。
RequestDispatcher rd = request.getRequestDispatcher("./jsp/top.jsp");
rd.forward(request, response);

遷移はうまくいくのですが、top.jspが表示される時のURLが
http://localhost:8080/Aproject/jsp/top.jspとなるはずが、
http://localhost:8080/Aproject/Login
となってしまいます。
web.xmlの記述は
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
としています。
forwardメソッドではなく、sendRedirectメソッドを使用した場合
http://localhost:8080/Aproject/jsp/top.jsp
とうまくいきます。

どのような原因が考えられますでしょうか?
宜しくお願い致します。

A 回答 (1件)

そういう仕様です。


RequestDispatcherはリクエスト(URL)から実体のデータ(JSP)を隠匿します。
    • good
    • 0
この回答へのお礼

なるほど納得。お手数をお掛けしましてすみませんでした。
ありがとうございました!

お礼日時:2007/10/11 15:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!