私はここで奇妙な問題を抱えています。私は本当に立ち往生しています。これをうまく機能させる必要があります。
そのため、「a href=servlet?id=10」というリンクを含む index.jsp というページがあります。このリンクをクリックすると、サーブレットの doGet() に移動します。これがサーブレットのコードです。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String action = request.getParameter("id");
// search database and create an arraylist
if(//user logged in)
address = "s/results.jsp";
else
address = "results.jsp";
// set arraylist in session object
RequestDispatcher dispatcher = request.getRequestDispatcher(address);
dispatcher.forward(request,response);
}
したがって、上記のコードは正常に機能しますが、リクエストの転送後、ブラウザは次のように URL を表示します
http://localhost/project/servlet?id=10 .
ユーザーのログインステータスに基づいて2つの異なるjspに転送しているため、上記のURLは必要ありません.1つは「s」フォルダーにあり、もう1つはその外にあります。ユーザーがログインしている場合は「s/results.jsp」に転送し、ユーザーがログインしていない場合は「results.jsp」に転送しています。
s/results.jsp の場合、results.jsp で ../ を使用して、「s」フォルダーの外部から画像やスクリプトなどのリソースにアクセスしています。
URL が s/results.jsp に変更されていないため、「../」でリソースにアクセスできず、jsp ページネーションを使用しているため、次にクリックすると URL が s/results.jsp に変更され、その中で../ を使用してリソースにアクセスできる場合
私の考えている解決策の 1 つは、すべてのリソースを s フォルダーにコピーすることですが、これにより冗長性が増します。
私の心の他の1つの解決策は、2つのjsp用に2つの異なるサーブレットを作成することですが、../でsフォルダーの外部のリソースにアクセスできるようにサーブレットを配置する場所がわかりません
私がタスクを実行できる他の良い方法はありますか..
私はこれに関する情報を見つけようとしましたが、それを理解することができませんでした.
どんな助けでも大歓迎です。