Um die Rolle von OncePerRequestFilter zu verstehen , müssen wir zunächst klar verstehen, wie sich ein normaler Filter verhält. Wenn Sie möchten, dass ein bestimmter Code unmittelbar vor oder nach der Servlet-Ausführung ausgeführt wird, erstellen Sie einen Filter, der wie folgt funktioniert:
code1 ===> servlet execution (using chain.doFilter()) ===> code2
Code1 wird also vor dem Servlet und Code2 nach der Servlet-Ausführung ausgeführt. Während der Servlet-Ausführung kann es jedoch zu einer anderen Anforderung an ein anderes Servlet kommen, und dieses andere Servlet hat auch denselben Filter. In diesem Fall wird dieser Filter erneut ausgeführt.
OncePerRequestFilter verhindert dieses Verhalten. Für unsere eine Anfrage wird dieser Filter genau einmal ausgeführt (nicht mehr und nicht weniger). Dieses Verhalten ist sehr nützlich, wenn Sie mit der Sicherheitsauthentifizierung arbeiten.