SpringMVC理论详解

什么是SpringMC

大部分Java应用都是web应用,展示层是web最重要的部分,Spring为展现层提供一个优秀的web框架-SpringMVC。和众多其他web框架一样,它是基于MVC的设计理念,此外它采用松耦合和可插拔组件结构,比其他的MVC框架具有更高的拓展性(集成Mybatis和Hibernate Struts)和灵活性。

SpringMVC 通过一套MVC注解的方式,让pojo成为处理请求的控制器,无需实现任何接口,同时SpringMVC还支持Restful的URL请求。

此外,SpringMVC在数据绑定、视图解析、本地化处理以及静态资源处理上都有很多不俗的表现。

框架设计上、拓展性和灵活性全面超越Struts,webwork等MVC框架。

SpringMC围绕DispatcherServlet这个核心展开,DispatherServlet是SpringMVC框架的总导演,他负责截获请求并将请求分派给相应的处理器处理。

  1. MVC是什么:
    Model/View/controller
    model模型层:负责封装应用的状态,实现相应的功能。通常分为数据模型和业务模型,数据模型运行存放业务模型,比如订单信息、用户信息等;而业务逻辑模型包含应用的业务操作,比如订单的添加和修改。通常由java开发人员编写程序完成,代码量最多。
    View视图:通过控制器从模型获取要展示的数据,然后用自己的方式展现给用户,用于提供界面来与用户进行人机交互。通常由前端和Java开发人员完成,代码量大;
    Controlle控制层:用来控制应用程序的流程和处理用户所发出的·请求,当控制器接收到用户请求,会将爱那个用户的数据和模型的更新相映射,也就是调用模型来实现用户请求的功能;然后控制器会选择相应的视图,把模型更新后的数据展示给用户。起到总调度作用。

 

  1. SpringMVC架构图

面试必备:

 

  1. 用户发送请求到DispatcherServlet(前置控制器),在web.xml中用来拦截匹配的请求,Servlet拦截规则要自己定义Handler操作者、组织者、顾问
  2. DispatcherServlet根据请求路径到HandlerMapping映射器查询具体Handler。
  3. HandlerMapping映射器返回HandlerExecutionChain,执行链(具体的Handle以及拦截器集合)。
  4. DispatcherServlet会根据Handler实现方式调用相应的HandlerAdapter适配器
  5. HandlerAdapter调用Handler处理具体的业务逻辑
  6. Handler返回ModelAndView给HandlerAdapter
  7. HandlerAdapter返回ModelAndView给DispatcherServlet
  8. DispatcherServlet根据视图名称到ViewResolver(视图解析器)
  9. ViewResolver返回具体的视图给DispatcherServlet
  10. DispatcherServlet渲染视图
  11. 展示给用户

Mybatis: 优秀的持久层框架,支持定制化SQL,存储过程以及高级映射,它避免了几乎所有的JDBC代码和手动设置参数以及获取结果集,Mybatis‘可以使用简单的XML或者注解来配置和映射原生类型、接口和Java 的POJO(Plain简单的朴素的 Plains Old Java Objects普通老式Java对象)为数据库中的记录。

 

Hibernate是一个开源代码的对象关系映射框架,它是JDBC进行非常轻量级的对象封装,它是将POJO与数据表建立映射关系,是一个全自动的ORM框架,hibernate可以自动生成SQL语句,自动执行,程序员可以任意使用面向对象编程思维操作数据库。Hibernate可以使用在任何JDBC场合,既可以在Java客户端使用,也可以在Servlet/JSP的web应用中使用,最具有革命意义的是,Hibernate可以在应用EJB的Java EE架构中取代CMP,完成数据持久化重任。

Hibernate比Mybatis重量级,hibernate配置比较烦人,入门门槛高,在Hibernate里边维护的是对象间关系,而Mybatis是表之间的关系。

如果涉及到多表查询,因为Hibernate的多对多或 者多对一的关系都会创建外检,这样肯定会造成现有数据库结构的修改,这是不允许的,特别是老项目中抽离新功能。如果遇到统计之类的,查询起来非常痛苦。NativeQuery虽然也可以用但是,价值不大。

Mybatis用xml维护,sql直接写入到xml文件中,对外只需要提供接口即可,通过实现类适配就完全没有任何问题,Mybatis比较轻量级,可以理解是对原生JDBC座做了一层封装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值