5

Java EE Webアプリケーションの場合、ServletRequestListenerを実装するリスナーとフィルターがあります。

リスナーの前にフィルターを呼び出す必要があることをweb.xmlで指定する方法はありますか?

リスナーの前にフィルターとそのマッピングを宣言しようとしましたが、リスナーはまだ実行されています。

何か案が?

  <filter>
    <filter-name>myfilter</filter-name>
    <filter-class>com.example.MyFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>myfilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>com.example.MyServletRequestListener </listener-class>
  </listener>
4

2 に答える 2

12

Browser(client)がサーバーに要求すると、(Tomcat)のようなコンテナーがクライアント要求HttpServletRequestおよび応答オブジェクトHttpServletResponseの要求オブジェクトを作成します。「ServletRequestListener」を実装するリスナーを構成する場合は、「public void requestInitialized(ServletRequestEventsre)」メソッドはを呼び出します

コンテナによる要求と応答オブジェクトの作成後、要求のリスナーがある場合、リスナーが最初に実行されます。

その後、Fillterを構成している場合は、HttpServletRequestとHttpServletResponseがFillterに割り当てられます。

ServletRequestの場合、リスナーが最初に表示されることを意味します。したがって、ServletRequestの場合、リスナーの前にフィラーを実行するように構成する方法はありません...。

于 2012-06-29T07:09:04.717 に答える
5

ServletRequestListener.requestInitialized()、フィルタが呼び出される前、およびServletRequestListener.requestDestroyed()すべてのフィルタとサービス メソッドが返された後に初期化されます。

于 2012-04-17T12:47:55.810 に答える