1

メイン JSP とプロセス JSP があります。プロセスjspで、応答をコミットし、応答を成功ページに転送しています。

 request.getRequestDispatcher("success.jsp").forward(request, response);

サーバー側で応答をコミットできます。プロセス JSP は、成功 JSP に応答を転送することもできます。ただし、URL は次のように表示されます: http://process.jsp?param1=value1&parm2=value2

出力を URL http://success.jspのようにきれいに表示したい

注: これは Java サーブレットでは問題なく動作します。試してみました。これはプロジェクトの要件であるため、Java サーブレットの代わりに JSP のみを使用しています。

誰かが私にこれに対する解決策を提案できますか?

4

1 に答える 1

1

RequestDispatcher#forward()リクエスト オブジェクトとレスポンス オブジェクトの両方をサーバー内の別のリソースに転送することになっています。a を実行してもクライアントに応答が返されません。これがforward() 、クライアントが同じ初期 URL を表示する理由です。

クライアントが別の URL を表示するには、HttpServletResponse#sendRedirect(). これはクライアントに戻り、必要な URL に対して新しい要求を行います。したがって、次のように変更します。

response.sendRedirect("success.jsp").

これを行う前に応答をコミットしないことを忘れないでください。IllegalStateException

サーブレットで動作すると言う理由については、理由はわかりませんが、どのように動作するかではなくforward()、JSPはサーブレットにコンパイルされるため、最終的には同じように動作するはずです。

于 2012-10-04T07:48:23.670 に答える