2012-05-04 10 views
3

STSで私のやり方を開始し、新しい「Hello World」Spring MVCプロジェクトを作成しました。私は、次のdoFilterメソッドでフィルタ(HelloWorldFilter.java)を作成したので、私のアプリにフィルターを追加したい :シンプルなWebアプリケーションフィルタはリクエストをフィルタリングしません

public void doFilter(ServletRequest request, ServletResponse response, 
      FilterChain chain) throws IOException, ServletException { 
     System.out.println("Entering Filter"); 
     request.setAttribute("hello", "Hello World from HelloWorldFilter!"); 
     chain.doFilter(request, response); 
     System.out.println("Exiting HelloWorldFilter"); 
    } 

私はそれを読んだによると(私のフィルタ)は、アプリケーションで定義する必要があります春の豆としてコンテキスト(私のフィルターに春の代表者にそれを - this manualから)

は、だから私のアプリケーションコンテキストに私が持っている:

<bean id="helloWorldFilter" class="com.yl.mvc.filters.HelloWorldFilter"> </bean> 

私のweb.xmlには以下が含まれています。

私の.jspファイルで
<filter> 
    <display-name>HelloWorldFilter</display-name> 
    <filter-name>HelloWorldFilter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>HelloWorldFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

私が追加:

<P><%=request.getAttribute("hello")%></P> 

しかし、私は私のウェブページでご覧くださいすべてが(私はHelloWorldFilterからのHello Worldを期待!)nullです。 フィルタは呼び出されません。

私はここに何か不足していますか?事前に

おかげで、 ヨギ

+1

明白にならないように、webappを再構築/再デプロイ/再起動しましたか?フィルタは、webappの起動時に1回だけ初期化されます。したがって、 'web.xml'を編集するだけで、既に実行中のWebアプリケーションに追加することはできません。 – BalusC

+0

確かに:)また私はいくつかの読書をして、私は私のweb.xmlを更新すべきであることを見た。私は秒で質問を編集します。ありがとう – forhas

+0

解決してください。名前の不一致がありました。私のアプリケーションコンテキストでは、 HelloWorldFilter forhas

答えて

2

は、[OK]を、それが解決して行きます。

フィルタ(spring bean)は、(web.xml内の)filter-name要素のBean定義(アプリケーションコンテキスト内)と同じ名前でなければなりません。私の場合は

私は自分のアプリケーションのコンテキストで持っていた:

<bean id="helloWorldFilter"... 

と私のweb.xml内:

<filter-name>HelloWorldFilter</filter-name> 

だから、資本Hで、小さな時間後になると - ています問題を引き起こした。 これを解決するために、アプリケーションコンテキストのBean IDを単にHelloWorldFilterに変更しました。

関連する問題