springMVC是java开发中的一种设计模式:
M:模型,包含业务bean、实体bean;是业务逻辑层和Dao和数据库取得连接并发送数据的层)。
V:视图,用户看到的页面,包括html、jsp页面。
C:控制层,可以看成是一个中转,接收页面发过来的请求,通过控制层匹配相应的接口,调用service、dao操作数据、分析并返回结果集,然后返回给controller,最后再返回给页面解析并显示。
优点:
1、各司其职,互不干涉
2、有利于开发中的分工
3、有利于组件的重用
4、降低了层与层之间的依赖,有利于代码的标准化开发
5、修改业务逻辑时,只需要替换相应的层,大大降低了因业务修改而去大量修改代码
缺点:
1、增加了系统结果和实现的复杂性,对于简单的界面,严格遵循MVC,使模型、视图、控制器分离,这样增加了机构的复杂性,降低运行效率
2、视图与控制器间过于紧密连接
3、视图对模型数据的低效率访问。视图为获取足够的数据显示,可能需要多次调用,对未变化数据的不必要的频繁访问,也将损害操作性能
执行流程:
1、发起请求到前端控制器DispatcherServlet
2、前端控制器通过HandlerMapping 找到对应的handler并返回,可根据xml配置、注解查找
3、DispatcherServlet(中央控制器)通过HandlerAdapter(处理器适配器)调用处理器
因为不同的HandlerMapping实现类返回的处理器格式不是固定的,所以处理请求时需要HandlerAdapter(处理器适配器)做适配。
4、执行处理器,返回ModelAndView给中央控制器
5、中央控制器调用ViewResolver(视图解析器)根据处理器返回的ModelAndView中的逻辑视图名为中央控制器返回一个可用的view实例。
6、中央控制器根据View渲染视图(将模型填充到视图),并响应给用户