| org.springframework.web.servlet.HandlerInterceptor
All known Subclasses: org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter, org.springframework.web.servlet.handler.HandlerInterceptorAdapter, org.springframework.web.servlet.mvc.WebContentInterceptor,
HandlerInterceptor | public interface HandlerInterceptor (Code) | | Workflow interface that allows for customized handler execution chains.
Applications can register any number of existing or custom interceptors
for certain groups of handlers, to add common preprocessing behavior
without needing to modify each handler implementation.
A HandlerInterceptor gets called before the appropriate HandlerAdapter
triggers the execution of the handler itself. This mechanism can be used
for a large field of preprocessing aspects, e.g. for authorization checks,
or common handler behavior like locale or theme changes. Its main purpose
is to allow for factoring out repetitive handler code.
Typically an interceptor chain is defined per HandlerMapping bean,
sharing its granularity. To be able to apply a certain interceptor chain
to a group of handlers, one needs to map the desired handlers via one
HandlerMapping bean. The interceptors themselves are defined as beans
in the application context, referenced by the mapping bean definition
via its "interceptors" property (in XML: a <list> of <ref>).
HandlerInterceptor is basically similar to a Servlet 2.3 Filter, but in
contrast to the latter it just allows custom pre-processing with the option
of prohibiting the execution of the handler itself, and custom post-processing.
Filters are more powerful, for example they allow for exchanging the request
and response objects that are handed down the chain. Note that a filter
gets configured in web.xml, a HandlerInterceptor in the application context.
As a basic guideline, fine-grained handler-related preprocessing tasks are
candidates for HandlerInterceptor implementations, especially factored-out
common handler code and authorization checks. On the other hand, a Filter
is well-suited for request content and view content handling, like multipart
forms and GZIP compression. This typically shows when one needs to map the
filter to certain content types (e.g. images), or to all requests.
author: Juergen Hoeller since: 20.06.2003 See Also: HandlerExecutionChain.getInterceptors See Also: org.springframework.web.servlet.handler.HandlerInterceptorAdapter See Also: org.springframework.web.servlet.handler.AbstractHandlerMapping.setInterceptors See Also: org.springframework.web.servlet.handler.UserRoleAuthorizationInterceptor See Also: org.springframework.web.servlet.i18n.LocaleChangeInterceptor See Also: org.springframework.web.servlet.theme.ThemeChangeInterceptor See Also: javax.servlet.Filter |
Method Summary | |
void | afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) Callback after completion of request processing, that is, after rendering
the view. | void | postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) Intercept the execution of a handler. | boolean | preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) Intercept the execution of a handler. |
afterCompletion | void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception(Code) | | 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 !
Parameters: request - current HTTP request Parameters: response - current HTTP response Parameters: handler - chosen handler to execute, for type and/or instance examination Parameters: ex - exception thrown on handler execution, if any throws: Exception - in case of errors |
postHandle | void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception(Code) | | 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.
Parameters: request - current HTTP request Parameters: response - current HTTP response Parameters: handler - chosen handler to execute, for type and/or instance examination Parameters: modelAndView - the ModelAndView that the handler returned(can also be null ) throws: Exception - in case of errors |
preHandle | boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception(Code) | | 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.
Parameters: request - current HTTP request Parameters: response - current HTTP response Parameters: handler - chosen handler to execute, for type and/or instance evaluation true if the execution chain should proceed with thenext interceptor or the handler itself. Else, DispatcherServlet assumesthat this interceptor has already dealt with the response itself. throws: Exception - in case of errors |
|
|