随笔分类 -  Spring MVC源码解读

摘要:初始化流程:1、创建WebApplicationContext context,设置context的setServletContext、setServletConfig、setId、setNamespace2、执行context.refresh(),加载spring文件,参见文章 spring 加载流程3、把context加入request Attribute 中key 为 FrameworkServlet.class.getName() + ".CONTEXT." ServletName4、spring加载问题后执行DispatcherServlet .onRefresh 阅读全文
posted @ 2013-11-06 16:40 benx621 阅读(669) 评论(0) 推荐(0)
摘要:http内容转换器默认添加ByteArrayHttpMessageConverterStringHttpMessageConverterResourceHttpMessageConverterSourceHttpMessageConverterAllEncompassingFormHttpMessageConverter根据jar包添加MappingJacksonHttpMessageConverterMappingJackson2HttpMessageConverterJaxb2RootElementHttpMessageConverterRssChannelHttpMessageConve 阅读全文
posted @ 2013-11-06 09:49 benx621 阅读(444) 评论(0) 推荐(0)
摘要:返回处理类ModelAndViewMethodReturnValueHandler 处理返回类型为ModelAndView,如果ModelAndView的view是String类型,则mavContainer.setViewName(viewName); 否则mavContainer.setView(ModelAndView.getView()); 最后mavContainer.addAllAttributes(mav.getModel());ModelMethodProcessor处理返回类型为Model,执行 mavContainer.addAllAttributes(((Model) . 阅读全文
posted @ 2013-11-06 09:44 benx621 阅读(579) 评论(0) 推荐(0)
摘要:参数解析类RequestParamMethodArgumentResolver处理类型: 1、包含注解RequestParam,但不处理参数类型为Map,且不包含value值 2、参数类型为MultipartFile,或javax.servlet.http.Part的类型处理方式: 1、如果参数类型为MultipartFile,返回MultipartFile 2、如果参数类型为List,返回List 3、如果参数类型为javax.servlet.http.Part,返回Part 4、否则返回request.getParameter("key") RequestParamMa 阅读全文
posted @ 2013-11-06 09:41 benx621 阅读(629) 评论(0) 推荐(0)
摘要:DispatcherServlet处理流程1、根据URL找到对应的hander2、执行HandlerExecutionChain.applyPreHandle(processedRequest, response),实际是执行HandlerInterceptor的preHandle方法,如果执行返回false,至请求完成3、执行HandlerAdapter.hander a、如果是注解方式,执行RequestMappingHandlerAdapter.handleInternal 阅读全文
posted @ 2013-11-06 09:40 benx621 阅读(190) 评论(0) 推荐(0)