关于WebMvc的配置
1.最暴力的配置方法就是直接继承WebMvcConfigurationSupport
2.比较温柔的做法就是使用注解@EnableWebMvc
这个注解是引入了DelegatingWebMvcConfiguration这样一个代理配置类,它继承了WebMvcConfigurationSupport,
然后通过注入WebMvcConfigurer来进行配置,所以,只要往容器里装入WebMvcConfigurer的自定义类就可以了。
3.自动配置类WebMvcAutoConfiguration里已经引入了WebMvcAutoConfigurationAdapter,也就是WebMvcConfigurer子类,
同样引入了EnableWebMvcConfiguration,是DelegatingWebMvcConfiguration子类,所以连注解@EnableWebMvc也不需要了。
注意:由于自动配置类WebMvcAutoConfiguration的引入条件是@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
所以,使用了上面1或者2时,是不会自动配置的,这样也就失去了自动配置类做的配置。
由此可见,尽量使用第3种方法,优先使用application.properties来配置,不够的地方,添加WebMvcConfigurer子类配置,
只有实在无法满足要求时才使用2甚至1的方法。
实际上Spring的基本调用也比较简单:
1.通过xml或者注解,创建各种HandlerMapping,这些类的目的就是创建从path到Handler的mapping。
HandlerMapping的唯一一个方法就是getHandler
2.便利各个HandlerMapping,找到Handler后,再遍历各个HandlerAdapter,看看有谁能接受这个Handler。
HandlerAdapter的两个主要方法
boolean supports(Object handler);
ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
3.有了ModelAndView后,就可以渲染出页面了
①HandlerMapping
BeanNameUrlHandlerMapping
SimpleUrlHandlerMapping//例:/static,/public
RequestMappingHandlerMapping
②HandlerAdapter
Servlet->SimpleServletHandlerAdapter
HttpRequestHandler->HttpRequestHandlerAdapter//例:ResourceHttpRequestHandler
Controller->SimpleControllerHandlerAdapter
HandlerMethod->RequestMappingHandlerAdapter
③HandlerMethodArgumentResolver
// Annotation-based argument resolution
@RequestParam->RequestParamMethodArgumentResolver
RequestParamMapMethodArgumentResolver
@PathVariable->PathVariableMethodArgumentResolver
PathVariableMapMethodArgumentResolver
@MatrixVariable->MatrixVariableMethodArgumentResolver
MatrixVariableMapMethodArgumentResolver
@ModelAttribute->ServletModelAttributeMethodProcessor
@RequestBody->RequestResponseBodyMethodProcessor
@RequestPart->RequestPartMethodArgumentResolver
@RequestHeader->RequestHeaderMethodArgumentResolver
RequestHeaderMapMethodArgumentResolver
@CookieValue->ServletCookieValueMethodArgumentResolver
@Value->ExpressionValueMethodArgumentResolver
@SessionAttribute->SessionAttributeMethodArgumentResolver
@RequestAttribute->RequestAttributeMethodArgumentResolver
// Type-based argument resolution
WebRequest
ServletRequest
MultipartRequest
HttpSession
Principal
Locale
TimeZone
"java.time.ZoneId"
InputStream
Reader
HttpMethod->ServletRequestMethodArgumentResolver
ServletResponse
OutputStream
Writer->ServletResponseMethodArgumentResolver
HttpEntity
RequestEntity->HttpEntityMethodProcessor
RedirectAttributes->RedirectAttributesMethodArgumentResolver
Model->ModelMethodProcessor
Map->MapMethodProcessor
Errors->ErrorsMethodArgumentResolver
SessionStatus->SessionStatusMethodArgumentResolver
UriComponentsBuilder
ServletUriComponentsBuilder->UriComponentsBuilderMethodArgumentResolver
④HandlerMethodReturnValueHandler
ModelAndView->ModelAndViewMethodReturnValueHandler
Model->ModelMethodProcessor
View->ViewMethodReturnValueHandler
StreamingResponseBody
ResponseEntity->StreamingResponseBodyReturnValueHandler
HttpEntity(not RequestEntity)->HttpEntityMethodProcessor
HttpHeaders->HttpHeadersReturnValueHandler
@ModelAttribute->ModelAttributeMethodProcessor
@ResponseBody->RequestResponseBodyMethodProcessor
void || CharSequence->ViewNameMethodReturnValueHandler
Map->MapMethodProcessor
ModelAttributeMethodProcessor
相关推荐
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。Spring MVC4是当前zuixin的版本,在众多特性上有了进一步的提升。, 在精通Spring...
首先, 我需要在你心里建立起 Spring MVC 的基本概念. 基于 Spring 的 Web 应用程序接收到 http://localhost:8080/hello.do(事实上请求路径是 /hello.do) 的请求后, Spring 将这个请求交给一个名为 helloController ...
《Spring MVC+MyBatis开发从入门到项目实战》分为4篇。第1篇是Java开发环境的搭建,包括JDK的下载与安装、环境变量的配置、MyEclipse的下载与基本配置。第2篇是MyBatis技术入门,包括剖析JDBC的弊端、MyBatis的背景...
精通Spring MVC 4 中文
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
本文详细介绍spring MVC的原理和开发心得体会。
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
SSM(spring+spring MVC+mybatis)开发学生信息后台管理系统,实现学生增删改查功能设计一个简单的学生信息管理系统,要求使用SSM框架技术整合实现,用户登录后能够通过Web页面添加、删除、修改和查询学生信息 ...
Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包
spring MVC环境搭建 所需jar包 ├── commons-logging-1.1.1.jar ├── jstl.jar ├── spring-aop-4.3.0.RELEASE.jar ├── spring-aspects-4.3.0.RELEASE.jar ├── spring-beans-4.3.0.RELEASE.jar ├...
Servlet JSP和Spring MVC初学指南
spring MVC数据绑定 含例子 转载自疯芒毕露的专栏 刚开始用spring mvc 做web开发时 经常会不知道如何合适绑定页面数据 用惯struts2的朋友更认为spring mvc 绑定数据不如struts2方便 本人最开始也是这么认为 经过一段...
spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。spring mvc最小代码。
Spring MVC MyBatis开发从入门到项目实战
Spring MVC: A Tutorial (Second Edition) by Paul Deck AZW3/MOBI/EPUB/PDF 多种版本 This is a tutorial on Spring MVC, a module in the Spring Framework for rapidly developing web applications. The MVC in...
01. 采用后台及前台的 Spring + Spring mvc + Hibernate + Bootstrap 02. 后台全注解式的开发(除了必要的spring和hibernate的xml配置以外) 03. 后台通过自定义注解结合一个访问拦截器实现整个系统的权限控制 04...
Spring MVC + Mybatis+Spring实现的个人博客系统基于SSM实现的个人博客系统.zip