2011-11-01 12 views
5

JSPページを1つのサーブレットからリダイレクトしたい。 すべてのJSPページはWeb Contentです。いいえunder Web-INF。 私はそのJSPページを呼び出すのに問題があります。私は404エラーがあります。パスの問題。ServletからjspをリダイレクトRequestDispatcher

ウェブコンテンツの下でjspページを呼び出すにはどうすればよいですか?

ServletContext context = getServletContext(); 
       RequestDispatcher dispatcher = context.getRequestDispatcher("/thankYou.jsp"); 
       dispatcher.forward(request,response); 

ありがとうございます。

問題が解決しました。

+2

このRequestDispatcherのrequestDispatcherのように使用して解決しました。 \t \t \t \t requestDispatcher = request.getRequestDispatcher( "/ thankYou.jsp"); \t \t \t \t requestDispatcher.forward(request、response); – kitokid

答えて

13

私はこのようなRequestDispatcherを使用して問題を解決:このコードを記述する

RequestDispatcher requestDispatcher; 
requestDispatcher = request.getRequestDispatcher("/thankYou.jsp"); 
requestDispatcher.forward(request, response); 
7

A、わずかにきれいな方法は次のとおりです。

request.getRequestDispatcher("/thankyou.jsp").forward(request, response); 
0

使用SendDirectあなたはJSPページ

で動作するようにしたい場合
response.sendRedirect("/thankyou.jsp"); 

これはRequestDispatcよりも使いやすいです彼女はdoPost()で動作しません。

+0

もちろん、POSTリクエストは "ビジュアル出力"でディスパッチされていないので、クライアントに返されます。しかし、JSPにリダイレクトするのではなく、サーブレット用にマップされているパスに転送されます(そのため、サイトはGET経由でクライアントから再度要求されます)。 – UniversE

+0

リクエストディスパッチャを使用すると、リクエストおよびレスポンスオブジェクトを中間ページから次のページに転送できますが、これはあなたの方法では不可能です。 –

0

レスポンスオブジェクトを使用して 'sendRedirect()'メソッドを使用する方が効果的です。

あなたはあなたの 'newpage.jsp' のページにコントロールを送信します

response.sendRedirect("./newpage.jsp"); 

このように書くことができます。

+0

いいえ、これは最終的な間違った方法です。これによりHTTP 302がクライアントに送信され、JSPページにリダイレクトされるため、Servletはかなり役に立たなくなります。 jspを "WEB-INF/view"ディレクトリに入れると、それはとにかく動作しませんでした。 – UniversE

0

このエラーは、リクエストを転送したJSPのjavaスクリプトレットにエラーが発生した場合に発生します。
たとえば、私は<%request.getAttribute( "user")を呼び出していました。 %> 私が使用したときに問題が解決しましたが、%request.getParameter( "user")%>

関連する問題