[英]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.