タイトルにあるように、リダイレクトせずにサーブレットからJSPページに転送するときにURLに.jsp拡張子を表示して、サーブレットの機能を失うにはどうすればよいですか?
次のコードを使用してサーブレットからJSPページに転送した場合でも、URLにサーブレットが含まれています。
request.getRequestDispatcher("index.jsp").forward(request, response);
あなたはそうしない。
ブラウザには、データを取得していると思われるURLが表示されます。リダイレクトを介して別のURLを取得していることを通知しない限り、サーバーがバックグラウンドで何を行っているかを知る方法はありません。また、そうすべきではありません。
アプリケーション設計の観点からは、どちらも気にする必要はありません。一意のURLを使用する唯一の理由は、ユーザーがブックマークを設定できるようにするためです。JSPページにサーブレットからのデータが必要な場合、ユーザーに別のURLを指定しても意味がありません。
ブラウザに「.jsp」URLを与えることに完全に固執している場合は、サーブレットにセッションにデータを保存させます。これは醜く、無意味であり、同時アクセスの問題が発生する可能性がありますが、機能します。
JSPに転送する代わりに、JSPにリダイレクトすることができます。
response.sendRedirect("index.jsp");