|
What is the interceptor
Interceptor generally refers generally by intercepting some requests from the browser to the server to complete some of the features section of code
Usually before a request occurs, the event, after a request we can intercept
What can be done interceptor
Interceptor can be used to verify permissions, to solve the garbage, logging operations, performance monitoring, exception handling, etc.
Custom interceptors
By inheritance Spring framework HandlerInterceptorAdapter class, then override preHandle, postHandle, afterCompletion three methods, in order to write our own business logic code implemented in three methods.
/ **
* Custom interceptors
* /
public class MyInterceptor extends HandlerInterceptorAdapter {
/ **
* Before requesting execution
* @param Request
* @param Response
* @param Handler indicates that the request is intercepted target
* @return False: intercepting a request termination request true: to continue execution of the request
* /
@Override
public boolean preHandle (HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception {
// Business logic code to write ... (such as: solve the garbage, the privilege verifier)
request.setCharacterEncoding ( "utf-8");
return true;
}
/ **
* @param ModelAndView view can be operated
* /
@Override
public void postHandle (HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception {
// Business logic code to write ... (eg: Operation logging, change the view information)
}
/ **
* @param Ex abnormalities
* /
@Override
public void afterCompletion (HttpServletRequest request, HttpServletResponse response,
Object handler, Exception ex) throws Exception {
// Business logic code to write ... (such as: resource destruction, exception handling)
}
}
a) public boolean preHandle (HttpServletRequest request, HttpServletResponse response,
Object handler) throws Exception
The method of doing before action can be achieved pretreatment data, such as: coding, anti resubmit security control.
If the method returns true, then proceed to action. Return false then intercepts the request
b) public void postHandle (HttpServletRequest request, HttpServletResponse response,
Object handler, ModelAndView modelAndView) throws Exception
The method in the action execution, before generating execution view. Here we have the opportunity to modify the view layer data.
c) public void afterCompletion (HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
Final performance, typically for releasing resources to handle exceptions. We can is empty according to ex, related to exception handling.
Register interceptor
In the xml configuration file:
< Mvc: interceptors>
< Bean id = "myInterceptor" class = "com.admol.web.MyInterceptor" />
< / Mvc: interceptors>
When there are multiple interceptors when you can write multiple bean
When we want to intercept some of the designated request:
< Mvc: interceptors>
< -! Path: the need to intercept the request, it will intercept all requests not write ->
< Mvc: mapping path = ". / * Htm" />
< Bean id = "myInterceptor" class = "com.admol.web.MyInterceptor" />
< / Mvc: interceptors>
A plurality of interceptors
xml configuration:
< Mvc: interceptors>
< Bean id = "myInterceptor" class = "com.admol.web.MyInterceptor" />
< Bean id = "myInterceptor2" class = "com.admol.web.MyInterceptor2" />
< / Mvc: interceptors>
When configured with a plurality of interceptors, will perform preHandle method according to the order of interceptors, then reverse and perform postHandle afterCompletion methods.
Other implementations
1. Implement the interface implements HandlerInterceptor
2. implement the interface implements WebRequestInterceptor
Sign interceptor method unchanged
The difference between the filter
1. The filter is dependent on the Servlet container, based on the callback function, Intercepto dependent on the frame, based on reflection
2. The larger filter filter range, you can also filter some static resources interceptor intercepts requests |
|
|
|