0

サーブレットに直接JSPを指すために使用されたURLをマップしたいのですが、これまでの私の努力-次のURLパターンをサーブレットにマッピングしています...

<url-pattern>/folder/myoldjsp.jsp</url-pattern>

が失敗したため、JSP処理エラーがクライアントに返されました。.jspサーブレットで終わるURLをマップするにはどうすればよいですか?

4

1 に答える 1

2

サーブレットが問題の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>

于 2011-09-02T22:15:01.920 に答える