1.1说说你对于spring mvc的理解
model1时代
整个web应用几乎全部用jsp组合而成,只用少量的javabean来进行数据库的连接、访问等操作。
A
但是这种模式下面JSP既是控制层(Controller)又是视图层(View).显而易见存在着很多问题,比如控制逻辑和表现逻辑杂揉在了一起,导致代码重用率极低;再比如前端后端相互依赖,难以测试维护并且发效率低。
model2时代
- Model:系统涉及的数据,也就是 dao 和 bean。
- View:展示模型中的数据,只是用来展示。
- Controller:处理用户请求都发送给 ,返回数据给 JSP 并展示给用户。
但是model2模式下还是存在很多的问题,比如说model2的抽象和封装程度做的远远不够,使用model2开发时会重复的造轮子,大大降低了程序的可维护性和可重用性。
springmvc时代
随着spring轻量级开发框架的流行,spring生态圈出现了spring mvc框架。springmvc可以帮助我们更简洁的进行web层的开发,她天生与spring框架继承。
springmvc中一般把后端项目分为service层(处理业务),dao层(数据库操作),entity层(实体类),controller层(控制层,返回数据给前台页面)
1.2springmvc的工作原理
流程说明:
1.客户端发起请求,直接请求到DispatcherServlet。
2.DispatherServlet根据请求信息调用HandlerMapping,解析请求对应的Handler.
3.解析到对应的Handler后,开始由HandlerAdapter适配器进行处理。
4。HandlerAdapter会根据Handler调用真正的处理器请求处理,并且处理相应的业务逻辑。
5.处理器处理完业务后,返回一个ModelAndView对象。model是返回的数据对象,view是个逻辑上的view。
6.viewResolver根据逻辑view查找实际的view。
7.DispathcerServlet把返回model传给view(视图渲染)。
8.把view返回给请求者(浏览器)
1.3spring框架中用到的设计模式(待更新。。。)
- 工厂设计模式 : Spring 使用工厂模式通过
BeanFactory
、ApplicationContext
创建 bean 对象。 - 代理设计模式 : Spring AOP 功能的实现。
- 单例设计模式 : Spring 中的 Bean 默认都是单例的。
- 模板方法模式 : Spring 中
jdbcTemplate
、hibernateTemplate
等以 Template 结尾的对数据库操作的类,它们就使用到了模板模式。 - 包装器设计模式 : 我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。
- 观察者模式: Spring 事件驱动模型就是观察者模式很经典的一个应用。
- 适配器模式 : Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配
Controller
。