/*
涵蓋了所有請求。這包括對HTML頁面引用的靜態資源(如CSS/JS /圖像文件)的請求。您似乎並不知道網頁是以這種方式工作的。您似乎以某種方式期望所有必要的資源都以與網頁請求相同的響應方式提供。這是不正確的。 HTML不能這樣工作。
您需要修改過濾器的網址格式,使其只匹配感興趣的網址。例如,如果所有這些網址的常見模式是以.jsp
結尾,那麼只需使用*.jsp
作爲網址格式。
<url-pattern>*.jsp</url-pattern>
請注意,您可以在一個單一的映射指定多個<url-pattern>
條目。因此,下面的內容也是有效的:
<filter-mapping>
...
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>*.xhtml</url-pattern>
</filter-mapping>
如果沒有特定的常見模式,例如因爲您使用URL重寫去除擴展並且沒有常用文件夾,所以您應該將所有靜態資源(如CSS/JS /圖像文件)移動到常用文件夾中,例如, /resources/
,然後在篩選器中添加一個檢查以從業務作業中排除該路徑。
<url-pattern>/*</url-pattern>
String resourceURI = request.getContextPath() + "/resources/";
boolean resourceRequest = request.getRequestURI().startsWith(resourceURI);
if (!resourceRequest) {
// Log request.
}
chain.doFilter(request, response);
這是不可能的了 「排除」 URL模式添加到映射。