在web.xml中部署dispaterservlet,并配置springmvc.xml等文件;
将映射文件请求到处理器handlermapping;
handlermapping会把请求映射为handlerexecutionchain类型的handler对象;
将handler对象作为参数传递给handleradapter的实例化对象,调用其handler方法会生成一个modelandview对象;
通过viewresolver视图解析器,将上一步骤中生成的modelandview解析为view;
dispatcherservlet根据获取到view,将视图返回给用户。
handlerexecutionchain类比较简单,好理解。
========================================================================
handlerexecutionchain {
========================================================================
下面是类的部分属性。
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); } } } }
以上就是对handlerexecutionchain类的实例讲解的详细内容。
