1. SpringMVC框架特点
- 清晰地角色划分。
- 灵活的配置功能。
- 提供了大量的控制器接口和实现类。
- 真正做到与View层的实现无关(JSP、Velocity、Xslt等)。
- 国际化支持。
- 面向接口编程。
- Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起。
2. MVC设计模式
模型(Model)-对应组件:JavaBean。
视图(View)-对应组件:JSP或者HTML文件。
控制器(Controller)-对应组件:Servlet。
MVC处理过程:
MVC 优点:
- 多视图共享一个模型,大大提高代码的可重用性。
- MVC三个模块相互独立,松耦合架构。
- 控制器提高了应用程序的灵活性和可配置性。
- 有利于软件工程化管理。
MVC 缺点:
- 原理复杂。
- 增加了系统结构和实现的复杂性。
- 视图对模型数据的低效率访问。
完美的系统架构 = 松耦合+高重用性+高扩展性
3. Spring MVC架构
4. SpringMVC体系结构
(1)SpringMVC请求处理流程
具体步骤:
- 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;
- 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图中的 3、4、5 步骤;
- 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的步骤 6、7;
- 前端控制器再次收回控制权,将响应返回给用户,图中的步骤 8;至此整个结束。
(2)SpringMVC体系结构
- DispatcherServlet(前端控制器):Spring MVC最核心的类,在web.xml中配置。
- Handler(处理器):对应MVC中C(Controller层),处理实际请求。标注了@RequestMapping的所有方法都可以看作是一个Handler。
- ModelAndView:逻辑视图名、模型对象。
5. ModelAndView(Controller to view)(重点)
ModelAndView包含视图信息和模型数据信息。
(1)添加模型数据,相当于将数据添加到request中。
ModelAndView addObject(String attributeName,Object attributeValue);
ModelAndView addAllObjects(Map<String,?> modelMap);
(2)设置视图
void setView(View view);
void setViewName(String viewName);
示例代码:
@RequestMapping("/index1")
public ModelAndView index(String username){
logger.info("welcome! username: " + username);
//返回前端
ModelAndView mView = new ModelAndView();
mView.addObject("username", username);
mView.setViewName("index");
return mView;
}