org.frameworkset.web.servlet.HandlerInterceptor Maven / Gradle / Ivy
Show all versions of bboss-mvc Show documentation
/*
* Copyright 2008 biaoping.yin
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.frameworkset.web.servlet;
import org.frameworkset.util.annotations.MethodData;
import org.frameworkset.web.servlet.handler.HandlerMeta;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Title: HandlerInterceptor.java
* Description:
* bboss workgroup
* Copyright (c) 2008
* @Date 2010-9-24
* @author biaoping.yin
* @version 1.0
*/
public interface HandlerInterceptor {
/**
* Intercept the execution of a handler. Called after HandlerMapping determined
* an appropriate handler object, but before HandlerAdapter invokes the handler.
* DispatcherServlet processes a handler in an execution chain, consisting
* of any number of interceptors, with the handler itself at the end.
* With this method, each interceptor can decide to abort the execution chain,
* typically sending a HTTP error or writing a custom response.
* @param request current HTTP request
* @param response current HTTP response
* @return true
if the execution chain should proceed with the
* next interceptor or the handler itself. Else, DispatcherServlet assumes
* that this interceptor has already dealt with the response itself.
* @throws Exception in case of errors
*/
boolean preHandle(HttpServletRequest request, HttpServletResponse response, HandlerMeta handlerMeta)
throws Exception;
/**
* Intercept the execution of a handler. Called after HandlerAdapter actually
* invoked the handler, but before the DispatcherServlet renders the view.
* Can expose additional model objects to the view via the given ModelAndView.
*
DispatcherServlet processes a handler in an execution chain, consisting
* of any number of interceptors, with the handler itself at the end.
* With this method, each interceptor can post-process an execution,
* getting applied in inverse order of the execution chain.
* @param request current HTTP request
* @param response current HTTP response
* @param handlerMeta chosen handler to execute, for type and/or instance examination
* @param modelAndView the ModelAndView
that the handler returned
* (can also be null
)
* @throws Exception in case of errors
*/
void postHandle(
HttpServletRequest request, HttpServletResponse response, HandlerMeta handlerMeta, ModelAndView modelAndView)
throws Exception;
/**
* Callback after completion of request processing, that is, after rendering
* the view. Will be called on any outcome of handler execution, thus allows
* for proper resource cleanup.
*
Note: Will only be called if this interceptor's preHandle
* method has successfully completed and returned true
!
* @param request current HTTP request
* @param response current HTTP response
* @param handlerMeta chosen handler to execute, for type and/or instance examination
* @param ex exception thrown on handler execution, if any
* @throws Exception in case of errors
*/
void afterCompletion(
HttpServletRequest request, HttpServletResponse response, HandlerMeta handlerMeta, Exception ex)
throws Exception;
/**
* Callback when request processing
*
Note: Will only be called if this interceptor's preHandle
* method has successfully completed and returned true
!
* @param request current HTTP request
* @param response current HTTP response
* @param handlerMeta chosen handler to execute, for type and/or instance examination
* @return true
if the execution chain should proceed with the
* * next interceptor or the handler itself. Else, DispatcherServlet assumes
* * that this interceptor has already dealt with the response itself.
* @throws Exception in case of errors
*/
default boolean invokerHandle(
HttpServletRequest request, HttpServletResponse response, HandlerMeta handlerMeta, MethodData handlerMethod)
throws Exception{
return true;
}
/**
* Callback when request process complete,you can handle result and return a new result here.
*
Note: Will only be called if this interceptor's preHandle
* method has successfully completed and returned true
!
* @param request current HTTP request
* @param response current HTTP response
* @param handlerMeta chosen handler to execute, for type and/or instance examination
* @return true
if the execution chain should proceed with the
* * next interceptor or the handler itself. Else, DispatcherServlet assumes
* * that this interceptor has already dealt with the response itself.
* @throws Exception in case of errors
*/
default Object invokerHandleComplete(
HttpServletRequest request, HttpServletResponse response, HandlerMeta handlerMeta, MethodData handlerMethod,Object result)
throws Exception{
return result;
}
}