サーブレットに直接JSPを指すために使用されたURLをマップしたいのですが、これまでの私の努力-次のURLパターンをサーブレットにマッピングしています...
<url-pattern>/folder/myoldjsp.jsp</url-pattern>
が失敗したため、JSP処理エラーがクライアントに返されました。.jsp
サーブレットで終わるURLをマップするにはどうすればよいですか?
サーブレットに直接JSPを指すために使用されたURLをマップしたいのですが、これまでの私の努力-次のURLパターンをサーブレットにマッピングしています...
<url-pattern>/folder/myoldjsp.jsp</url-pattern>
が失敗したため、JSP処理エラーがクライアントに返されました。.jsp
サーブレットで終わるURLをマップするにはどうすればよいですか?
サーブレットが問題のJSPにリクエストを転送していない場合は、正常に機能するはずです。つまり、サーブレット自体が呼び出しで再度実行されるため、ディスパッチループが無限に発生しRequestDispatcher#forward()
ます。
何らかの理由でターゲットJSPファイルの名前を変更できない場合は、サーブレットを次のような別のURLパターンにマッピングし、 (または最も近いリクエストURLに一致するものに)マッピングされたフィルタ/foo
を作成するのが最善の策です。で終わるかどうかを判断し、リクエストをサーブレットに転送します。/folder/*
HttpServletRequest#getRequestURI()
/myoldjsp.jsp
例えば
if (((HttpServletRequest) request).getRequestURI().endsWith("/myoldjsp.jsp")) {
request.getRequestDispatcher("/foo").forward(request, response);
} else {
chain.doFilter(request, response);
}
つまり、フィルタはデフォルトでは転送されたリクエストでは呼び出されません。必要に応じて、JSPファイル名をフィルターとして構成可能にすることができます<init-param>
。