3

web.xml のように定義されたサーブレットがあります。

<servlet-mapping>
  <servlet-name>SessionRebindServlet</servlet-name>
  <url-pattern>*.ppp</url-pattern>
</servlet-mapping>

拡張機能付きのリクエストがあると.ppp、上記のサーブレットが使用されます。

ただし、「popup.ppp」という名前のファイルの場合は、このサーブレットをまったく呼び出さないという例外が 1 つあります。

出来ますか?

アップデート

フィルターを追加しました

<filter-mapping>
    <filter-name>AppFilter</filter-name>
    <url-pattern>*.ppp</url-pattern>
</filter-mapping>

およびフィルターコードで:

String url = ((HttpServletRequest) request).getRequestURI();
        if (url.contains("popup.ppp")) {

        } else {
            chain.doFilter(request, response);
        }
4

3 に答える 3

1

フィルターを使用し、フィルターで doFilter() メソッドをオーバーライドするだけです。

文字列 URL = request.getRequestURL().toString();

次に、この url を使用して popup.ppp と比較します。等しくない場合は doFilter()

また

これを試してください(私はこれで確認していません)

<servlet-mapping>
  <servlet-name>SessionRebindServlet</servlet-name>
  <url-pattern>*.ppp</url-pattern>
</servlet-mapping>


<servlet-mapping>
  <servlet-name>newServletName</servlet-name>
  <url-pattern>popup.ppp</url-pattern>
</servlet-mapping>
于 2013-01-11T09:28:23.127 に答える
1

私はそのような場合にこれを使用します:

String lPath = ((HttpServletRequest) request).getRequestURI();
if (lPath.startsWith("/supported")) {
   chain.doFilter(request, response); 
} else {
  // not supported
}
于 2013-01-11T09:23:31.857 に答える
1

いいえ、<url-mapping/>要素でそれを行うことはできません。すべてのオプションについては、仕様の第 12 章を参照してください。

/somepath/*.ppp他のものを妨害しpopup.pppたり呼び出したりしないようにマップできませpopup.pppんか?

于 2013-01-11T09:26:55.157 に答える