3

/Testサーブレット Test.java と/anything/Test同じサーブレットにもマップする必要があります。/*/Test正規表現を受け入れないため、web.xmlでは機能しないことを読みました。

フィルターを使用してそれを行う別の方法はありますか? ブロックの問題により、Tuckey URL フィルターを使用できません。また、サーブレットにもその「何でも」が必要です。マッピングできれば、そのための URL 文字列を処理する予定でした。

例えば

/ProjectName/Test テストサーブレットを開く必要があります

また、/ProjectName/xyz/Test テストサーブレットも開く必要があります

xyz は何でもかまいません。また、テスト サーブレットで xyz を取得したいと考えています。xyz をrequest.getRequestURI()取得して、URL からフェッチすることを計画しました。

4

1 に答える 1

0

フィルターが必要になります。

これは機能するはずの基本的なものです。

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain)
        throws IOException, ServletException {

    HttpServletRequest req = (HttpServletRequest) request;

    String url = req.getRequestURI();
    if (url.endsWith("test")) {
        request.getServletContext().getNamedDispatcher("TestServlet").forward(request, response);
    } else {
        chain.doFilter(request, response);
    }
}

キーポイント。使用getNamedDispatcherしたい名前付きサーブレットを取得するために使用します。このサーブレットを実際にパターンにまったくマップしないのがおそらく最善です。

を使用することにより、getNamedDispatcher適切な宛先サーブレット内の要求 URL が破損しません。

于 2016-03-10T05:40:23.320 に答える