类 OncePerRequestFilter

    • 方法详细资料

      • isAsyncDispatch

        protected boolean isAsyncDispatch​(HttpServletRequest request)
        The dispatcher type javax.servlet.DispatcherType.ASYNC introduced in Servlet 3.0 means a filter can be invoked in more than one thread over the course of a single request. This method returns true if the filter is currently executing within an asynchronous dispatch.
        参数:
        request - the current request
        从以下版本开始:
        3.2
        另请参阅:
        WebAsyncManager.hasConcurrentResult()
      • shouldNotFilter

        protected boolean shouldNotFilter​(HttpServletRequest request)
                                   throws ServletException
        Can be overridden in subclasses for custom filtering control, returning true to avoid filtering of the given request.

        The default implementation always returns false.

        参数:
        request - current HTTP request
        返回:
        whether the given request should not be filtered
        抛出:
        ServletException - in case of errors
      • shouldNotFilterAsyncDispatch

        protected boolean shouldNotFilterAsyncDispatch()
        The dispatcher type javax.servlet.DispatcherType.ASYNC introduced in Servlet 3.0 means a filter can be invoked in more than one thread over the course of a single request. Some filters only need to filter the initial thread (e.g. request wrapping) while others may need to be invoked at least once in each additional thread for example for setting up thread locals or to perform final processing at the very end.

        Note that although a filter can be mapped to handle specific dispatcher types via web.xml or in Java through the ServletContext, servlet containers may enforce different defaults with regards to dispatcher types. This flag enforces the design intent of the filter.

        The default return value is "true", which means the filter will not be invoked during subsequent async dispatches. If "false", the filter will be invoked during async dispatches with the same guarantees of being invoked only once during a request within a single thread.

        从以下版本开始:
        3.2
      • shouldNotFilterErrorDispatch

        protected boolean shouldNotFilterErrorDispatch()
        Whether to filter error dispatches such as when the servlet container processes and error mapped in web.xml. The default return value is "true", which means the filter will not be invoked in case of an error dispatch.
        从以下版本开始:
        3.2
      • doFilterNestedErrorDispatch

        protected void doFilterNestedErrorDispatch​(HttpServletRequest request,
                                                   HttpServletResponse response,
                                                   FilterChain filterChain)
                                            throws ServletException,
                                                   IOException
        Typically an ERROR dispatch happens after the REQUEST dispatch completes, and the filter chain starts anew. On some servers however the ERROR dispatch may be nested within the REQUEST dispatch, e.g. as a result of calling sendError on the response. In that case we are still in the filter chain, on the same thread, but the request and response have been switched to the original, unwrapped ones.

        Sub-classes may use this method to filter such nested ERROR dispatches and re-apply wrapping on the request or response. ThreadLocal context, if any, should still be active as we are still nested within the filter chain.

        抛出:
        ServletException
        IOException
        从以下版本开始:
        5.1.9