一
1.springmvc是什么?
springmvc是spring的一个模块,提供web层解决方案(基于mvc设计架构)
2.mvc在b/s系统的应用
mvc是一个设计模式,在b/s系统的应用:
3.SpringMVC框架
DispatcherServlet:前端控制器,由springmvc提供
HandlerMappting:处理器映射器,由springmvc提供
HandlerAdapter:处理器适配器,由springmvc提供
Handler:处理器,需要程序员开发
ViewResolver:视图解析器,由springmvc提供
View:真正视图页面需要由程序编写
二
1.入门程序
需求:实现商品列表查询
需要的jar包:使用spring5.0.2(带springwebmvc模块)
注意:springmvc默认支持jstl
2.前端控制器
3.springmvc.xml
在springmvc.xml中配置springmvc架构三大组件(处理器映射器、适配器、视图解析器)
- 处理器映射器
在springmvc.xml中配置:
BeanNameUrlHandlerMapping: 根据请求url(XXXX.action)匹配spring容器bean的 name
找到对应的bean(程序编写的Handler)
<bean
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
所有处理器映射器都实现HandlerMapping接口。
- 处理器适配器
在springmvc.xml配置:处理器映射器
所有的适配器都是实现了HandlerAdapter接口。
程序编写Handler根据适配器的要求编写。
SimpleControllerHandlerAdapter适配器要求:
通过supports方法知道Handler必须要实现哪个接口:
3. Handler编写
1.实现Controller接口
2.注解开发
4. 配置handler
在springmvc.xml配置Handler由spring管理Handler。
1 单个实现Controller接口的handler配置2.单个注解开发handler的handler配置
5.配置视图解析器
6.其它非注解处理器映射器和适配器
1.BeanNameUrlHandlerMapping(映射器)
根据请求url(XXXX.action)匹配spring容器bean的 name
找到对应的bean(程序编写的Handler)
2.SimpleUrlHandlerMapping(映射器)
注意:在springmvc.xml配置了多个处理器映射器,多个处理器映射器可以共存。
3.SimpleControllerHandlerAdapter(适配器)
要求程序编写的Handler(Controller)需要实现 Controller接口。
4.HttpRequestHandlerAdapter(适配器)
在springmvc.xml配置:HttpRequestHandlerAdapter
要求Handler 实现 HttpRequestHandler接口
事例:开发Handler
7.DispatcherServlet.properoties
DispatcherServlet前端控制器加载 DispatcherServlet.properoties 配置文件,从而默认加载各各组件,
如果在springmvc.xml中配置了处理器映射器和适配器,以sprintmvc.xml中配置的为准
注解映射器和适配器
(重点掌握)
注解映射器
spring3.1之前默认加载映射器是
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping,3.1之后要使用:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
在springmvc.xml中配置RequestMappingHandlerMapping:
使用RequestMappingHandlerMapping需要在Handler 中使用@controller标识此类是一个控制器,使用@requestMapping指定Handler方法所对应的url。
注解适配器
spring3.1之前默认加载映射器是
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter,3.1之后要使用:
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
RequestMappingHandlerAdapter,不要求Handler实现任何接口,它需要和RequestMappingHandlerMapping注解映射器配对使用,主要解析Handler方法中的形参。
注解开发Hanlder
配置handler
小结
DispatcherServlet:前端控制器,相当于中央调度器,可以降低组件之间的耦合度。
HandlerMapping:处理器映射器,负责根据url查找Handler
HandlerAdapter:处理器适配器,负责根据适配器要求的规则去执行处理器。可以通过扩展适配器支持不同类型的Handler。
viewResolver:视图解析器,根据逻辑视图名解析成真正的视图
真正视图地址==前缀+逻辑视图名+后缀