-
preHandle方法会在Handler方法执行之前执行,我们可以在其中进行一些前置的判断或者处理。
-
postHandle方法会在Handler方法执行之后执行,我们可以在其中对域中的数据进行修改,也可以修改要跳转的页面。
-
afterCompletion方法会在最后执行,这个时候已经没有办法对域中的数据进行修改,也没有办法修改要跳转的页面。我们在这个方法中一般进行一些资源的释放。
/**
* 在handler方法执行之前会被调用
* @param request 当前请求对象
* @param response 响应对象
* @param handler 相当于是真正能够处理请求的handler方法封装成的对象,对象中有这方法的相关信息
* @return 返回值代表是否放行,如果为true则放行,如果为fasle则拦截,目标方法执行不到
* @throws Exception
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle");
//返回值代表是否放行,如果为true则放行,如果为fasle则拦截,目标方法执行不到
return true;
}
/**
* postHandle方法会在Handler方法执行之后执行
* @param request 当前请求对象
* @param response 响应对象
* @param handler 相当于是真正能够处理请求的handler方法封装成的对象,对象中有这方法的相关信息
* @param modelAndView handler方法执行后的modelAndView对象,我们可以修改其中要跳转的路径或者是域中的数据
* @throws Exception
*/
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle");
}
/**
* afterCompletion方法会在最后执行
* @param request 当前请求对象
* @param response 响应对象
* @param handler 相当于是真正能够处理请求的handler方法封装成的对象,对象中有这方法的相关信息
* @param ex 异常对象
* @throws Exception
*/
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion");
}