Class AdviceFilter

    • Method Detail

      • preHandle

        protected boolean preHandle​(ServletRequest request,
                                    ServletResponse response)
                             throws Exception
        Returns true if the filter chain should be allowed to continue, false otherwise. It is called before the chain is actually consulted/executed.

        The default implementation returns true always and exists as a template method for subclasses.

        Parameters:
        request - the incoming ServletRequest
        response - the outgoing ServletResponse
        Returns:
        true if the filter chain should be allowed to continue, false otherwise.
        Throws:
        Exception - if there is any error.
      • postHandle

        protected void postHandle​(ServletRequest request,
                                  ServletResponse response)
                           throws Exception
        Allows 'post' advice logic to be called, but only if no exception occurs during filter chain execution. That is, if executeChain throws an exception, this method will never be called. Be aware of this when implementing logic. Most resource 'cleanup' behavior is often done in the afterCompletion(request,response,exception) implementation, which is guaranteed to be called for every request, even when the chain processing throws an Exception.

        The default implementation does nothing (no-op) and exists as a template method for subclasses.

        Parameters:
        request - the incoming ServletRequest
        response - the outgoing ServletResponse
        Throws:
        Exception - if an error occurs.
      • afterCompletion

        public void afterCompletion​(ServletRequest request,
                                    ServletResponse response,
                                    Exception exception)
                             throws Exception
        Called in all cases in a finally block even if preHandle returns false or if an exception is thrown during filter chain processing. Can be used for resource cleanup if so desired.

        The default implementation does nothing (no-op) and exists as a template method for subclasses.

        Parameters:
        request - the incoming ServletRequest
        response - the outgoing ServletResponse
        exception - any exception thrown during preHandle, executeChain, or postHandle execution, or null if no exception was thrown (i.e. the chain processed successfully).
        Throws:
        Exception - if an error occurs.
      • executeChain

        protected void executeChain​(ServletRequest request,
                                    ServletResponse response,
                                    FilterChain chain)
                             throws Exception
        Actually executes the specified filter chain by calling chain.doFilter(request,response);.

        Can be overridden by subclasses for custom logic.

        Parameters:
        request - the incoming ServletRequest
        response - the outgoing ServletResponse
        chain - the filter chain to execute
        Throws:
        Exception - if there is any error executing the chain.
      • cleanup

        protected void cleanup​(ServletRequest request,
                               ServletResponse response,
                               Exception existing)
                        throws ServletException,
                               IOException
        Executes cleanup logic in the finally code block in the doFilterInternal implementation.

        This implementation specifically calls afterCompletion as well as handles any exceptions properly.

        Parameters:
        request - the incoming ServletRequest
        response - the outgoing ServletResponse
        existing - any exception that might have occurred while executing the FilterChain or pre or post advice, or null if the pre/chain/post execution did not throw an Exception.
        Throws:
        ServletException - if any exception other than an IOException is thrown.
        IOException - if the pre/chain/post execution throw an IOException