SpringMVC学习笔记
Springmvc框架
执行流程
1. 第一步:发起请求到前端控制器(DispatcherServlet)
2. 第二步:前端控制器请求HandlerMapping查找 Handler。
可以根据xml配置、注解进行查找
3. 第三步:处理器映射器HandlerMapping向前端控制器返回Handler
4. 第四步:前端控制器调用处理器适配器去执行Handler
5. 第五步:处理器适配器去执行Handler
6. 第六步:Handler执行完成给适配器返回ModelAndView
7. 第七步:处理器适配器向前端控制器返回ModelAndView。
ModelAndView是springmvc框架的一个底层对象,包括Model和view
8. 第八步:前端控制器请求视图解析器去进行视图解析
根据逻辑视图名解析成真正的视图(jsp)
9. 第九步:视图解析器向前端控制器返回View
10. 第十步:前端控制器进行视图渲染
视图渲染将模型数据(在ModelAndView对象中)填充到request域
11. 第十一步:前端控制器向用户响应结果
相关组件
1. 前端控制器DispatcherServlet
1) 不需要程序员开发
2) 作用:接收请求,响应结果,相当于转发器,中央处理器。有了DispatcherServlet减少了其它组件之间的耦合度。
2、处理器映射器HandlerMapping
1) 不需要程序员开发
2) 作用:根据请求的url查找Handler
3、处理器适配器HandlerAdapter
1) 不需要程序员开发
2) 作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler
4、处理器Handler
1) 需要程序员开发
2) 注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。使用不同的处理器适配器,Handler实现的接口不同。
5、视图解析器View resolver
1) 不需要程序员开发
2) 作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)
6、视图View
1) 需要程序员开发jsp
2) View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)
相关组件的配置
前端控制器
1. 位置:在web.xml中配置前端控制器。
非注解处理器映射器和适配器
1. 位置:在classpath下的springmvc.xml中配置处理器映射器。
处理器映射器
1. 第一种:org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
2. 第二种:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
3. 多个映射器可以并存,前端控制器判断url能让哪些映射器映射,就让正确的映射器处理。
处理器适配器
1. 第一种:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter
l 要求编写的Handler实现 Controller接口。
2. 第二种:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
l 要求编写的Handler实现HttpRequestHandler接口
注解处理器适配器和适配器
1. 位置:在classpath下的springmvc.xml中配置处理器适配器。
配置注解映射器和适配器
1. 第一种:分别配置
2. 第二种:自动配置
<mvc:annotation-driven></mvc:annotation-driven>
编写Handler
非注解式
1. 根据不同的非注解处理器映射器,编写Handler时继承不同的接口。
public class ItemsController1 implementsController {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//数据填充
//返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
//相当于request的setAttribut,在jsp页面中通过itemsList取数据
modelAndView.addObject("itemsList", itemsList);
//指定视图
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
return modelAndView;
}
}
2. 将编写Handler在spring容器加载。
注解式
1. 通过注解声明Handler:
2. 在Spring容器中加载Handler
<context:component-scan base-package="cn.itcast.ssm.control"></context:component-scan>
视图解析器
1) 视图解析器配置前缀和后缀:
2) 程序中不用指定前缀和后缀:
小结:采用注解开发终极配置(实际开发使用)
源码分析
通过前端控制器源码分析springmvc的执行过程。
1. 第一步:前端控制器接收请求
调用doDiapatch
2. 第二步:前端控制器调用处理器映射器查找 Handler
3. 第三步:调用处理器适配器执行Handler,得到执行结果ModelAndView
4. 第四步:视图渲染,将model数据填充到request域。
1) 视图解析,得到view:
2) 调用view的渲染方法,将model数据填充到request域
3) 渲染方法:
本文介绍SpringMVC的工作流程,从用户请求到达前端控制器开始,直至响应结果返回整个过程中涉及的关键组件及其职责。同时详细说明了各组件的配置方式,包括非注解和注解式开发。
1327

被折叠的 条评论
为什么被折叠?



