2014-05-21 25 views
1

我想在澤西島中添加一個過濾器,該過濾器爲服務器的所有響應添加了一些標準HTTP頭。如何在澤西島中使用在所有例外情況下執行的響應過濾器

如果我使用javax.servlet.Filter,它只會執行「正常」響應。如果有一個未捕獲的異常通過錯誤映射器生成響應,則不執行該過濾器。

如果我使用Jersey的ContainerResponseFilters之一,如果另一個javax篩選器拋出異常,則它不起作用。

如何添加始終執行的過濾器(或者可能是偵聽器,錯誤映射器,無論什麼)?

回答

2

您可以使用javax.servlet.Filter,只要確保它是過濾器鏈中的第一個(通過簡單地將其添加到您的web.xml中)。你必須確保的第二件事是在調用進一步的鏈之前添加請求頭。

public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { 
    // add header here 
    chain.doFilter(request, response); 
}