それが私のフィルターです:
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws java.io.IOException, javax.servlet.ServletException
{
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String currentURL = request.getRequestURI();
MaintenanceService maintenanceMode = new MaintenanceService();
if (maintenanceMode.getMaintenanceMode())
{
String urlNew = currentURL.concat("maintenance.jsp");
response.sendRedirect(urlNew);
}
filterChain.doFilter(servletRequest, servletResponse);
}
「下」の maintenanceMode.getMaintenanceMode() には、変数ゲッターがあります。
boolean maintenanceMode = Boolean.getBoolean("maintenance");
転送(サーバー側のリダイレクト) を使用すると、クライアント側のリダイレクトを試みているときに正常に動作します。
response.sendRedirect(urlNew);
無限に出現するmaintenance.jspの連結を取得しました:
http://localhost:8080/maintenance.jspmaintenance.jspmaintenance.jspmaintenance.jspmaintenance.jsp
サーバー側のリダイレクトのように、1 つのオカレンスにリダイレクトしない理由:
http://localhost:8080/maintenance.jsp
Web.xml フィルター マッピング:
<filter-mapping>
<filter-name>maintenanceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>