簡體   English   中英

彈簧過濾器稱為多次

[英]Spring filter called Multiple times

我正在工作一個具有單個DispatcherServlet的spring 2.5應用程序。 該應用程序還將與Jersey集成以提供REST服務。

我正在嘗試過濾對應用程序的每個請求。 Filter / OncePerRequestFilter(我都嘗試過)工作正常,但似乎應用程序為單個請求多次調用doFilter / doInternalFilter。 通過嘗試另外三種不同的請求,結果發現樣式表/腳本文件更多的頁面有助於更多的函數調用。

我在過濾器標准結構方面做錯了嗎? 是否有需要更改或添加到應用程序的任何內容。

public class UnfepiRequestFilter extends OncePerRequestFilter{

    @Override
    protected void doFilterInternal (HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
        System.out.println("Start filtering");

        filterChain.doFilter(request, response);

        System.out.println("Done Filtering");
    }

}

web.xml文件:

<filter> 
    <filter-name>filterHeader</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
  </filter>
  <filter-mapping> 
    <filter-name>filterHeader</filter-name> 
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
  </filter-mapping>

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/myApp-servlet.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <display-name>myApp</display-name>
  <servlet>
    <servlet-name>myApp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>myApp</servlet-name>
    <url-pattern>*.htm</url-pattern>
    <url-pattern>*.action</url-pattern>
    <url-pattern>*.json</url-pattern>
  </servlet-mapping>

基本上,這是在特定時間重定向或拒絕用戶請求(用於維護任務或暫時使任何服務不可用)。 是否有某種方法可以防止每個請求對過濾器的多次調用。 任何幫助,將不勝感激..

似乎您沒有做錯任何事情。 每個請求僅調用一次過濾器。 但是,這:

通過嘗試另外三種不同的請求,結果發現樣式表/腳本文件更多的頁面有助於更多的函數調用。

讓我認為您不了解瀏覽器加載網頁的方式。 網頁上的每個資產(腳本,樣式表,圖像)均按其自己的請求加載。 沒有鏈接資源的簡單HTML應該導致單個服務器調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM