過濾器在請求到達 Servlet 前、響應返回客戶端前攔截處理。多個過濾器組成過濾鏈,按配置順序執行。
| 模式 | 說明 | 範例 |
|---|---|---|
| /* | 所有資源 | /index.jsp, /api/user |
| *.html | 特定副檔名 | /page.html |
| /folder/* | 目錄下所有 | /admin/dashboard |
| /servletName | 指定 Servlet | /loginServlet |
| /dir/file.jsp | 單一檔案 | /WEB-INF/view/login.jsp |
注意:路徑必須以 / 開頭。
sendRedirect、<a href>、JS 跳轉。<jsp:forward>、RequestDispatcher.forward()。<jsp:include>、<%@ include %>。request/response.setCharacterEncoding("UTF-8")。@WebFilter(urlPatterns = "/*", dispatcherTypes = {DispatcherType.REQUEST})
public class EncodingFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
chain.doFilter(req, resp);
}
}
@WebFilter 註解替代 web.xml(Servlet 3.0+)。@Order(Spring Boot)。chain.doFilter 用 try-finally 確保資源釋放。