ロジックは、フィルタがヒットし、条件が true ではないため、フィルタ チェーンを通過するというものです。応答がコミットされた後、フィルターがヒットし、条件が真になります (要求属性が設定されました)。転送を実行するために入りますが、ページは転送されません。初めてチェーンにヒットする前に転送するさまざまなロジックをテストし、正常に転送されたため、これはコミットされている応答と関係があることを知っています。
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
if (some condition equals true) {
httpServletRequest.getRequestDispatcher("/home.jsp").forward(request, response);
return;
} else {
chain.doFilter(request, response);
}
}
私のデプロイメント記述子の例:
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.filters.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>