Avant d'expliquer HandlerExecutionChain, ayons une compréhension générale des principales étapes de développement de SpringMVC :
Déployez DispaterServlet dans web.xml et configurez springmvc.xml et d'autres fichiers
Demandez le fichier ; fichier de mappage vers Processor HandlerMapping;
HandlerMapping mappera la requête à un objet gestionnaire de type HandlerExecutionChain;
passera l'objet gestionnaire en tant que paramètre à l'objet d'instanciation de HandlerAdapter et appellera sa méthode de gestionnaire générera un objet ModelAndView ;
Utilisez l'analyseur de vue ViewResolver pour analyser le ModelAndView généré à l'étape précédente dans une vue ;
DispatcherServlet renvoie la vue à l'utilisateur en fonction de la vue obtenue.
La classe HandlerExecutionChain est relativement simple et facile à comprendre.
============================================ == ============================
HandlerExecutionChain {
===== === ================================================ === ===============
Voici quelques attributs de la classe.
List<HandlerInterceptor>
============================= = ============================================
applyPreHandle(HttpServletRequest request, HttpServletResponse response) = (! ( i = 0; i < interceptors.length; i++= (!interceptor.preHandle(request, response, .interceptorIndex =
================================== === ====================================
applyPostHandle(HttpServletRequest request, HttpServletResponse response, ModelAndView mv) = (! ( i = interceptors.length - 1; i >= 0; i--=
/** * 这个方法只会执行preHandle()方法已经成功执行并且返回true的拦截器中的postHandle()方法。 */void triggerAfterCompletion(HttpServletRequest request, HttpServletResponse response, Exception ex)throws Exception { HandlerInterceptor[] interceptors = getInterceptors();if (!ObjectUtils.isEmpty(interceptors)) {for (int i = this.interceptorIndex; i >= 0; i--) { HandlerInterceptor interceptor = interceptors[i];try { interceptor.afterCompletion(request, response, this.handler, ex); }catch (Throwable ex2) { logger.error("HandlerInterceptor.afterCompletion threw exception", ex2); } } } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!