四、SpringMVC前端控制器

1.前端控制器接收请求,调用doDispatch方法前端

protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
	HttpServletRequest processedRequest = request;
	HandlerExecutionChain mappedHandler = null;
	boolean multipartRequestParsed = false;
	...
}

2.前端控制器调用HandlerMapping(处理器映射器)根据url查找Handlerjava

mappedHandler = getHandler(processedRequest);
protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception {
    for (HandlerMapping hm : this.handlerMappings) {
        if (logger.isTraceEnabled()) {
            logger.trace(
                "Testing handler map [" + hm + "] in DispatcherServlet with name '" + getServletName() + "'");
        }
        HandlerExecutionChain handler = hm.getHandler(request);
        if (handler != null) {
            return handler;
        }
    }
    return null;
}

3.调用处理器适配器执行Handler,获得执行的结果ModelAndView mv。在doDispatch方法中app

mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

4.视图渲染。doDispatch->processDispatchResult->render。在render方法中,视图解析获得view。this

view = resolveViewName(mv.getViewName(), mv.getModelInternal(), locale, request);

调用view的渲染方法,将model数据填充到request域。在render方法中,调用View接口的render方法url

view.render(mv.getModelInternal(), request, response);
相关文章
相关标签/搜索