springmvc入门详解

• 先看下spring提供的完整架构图

• 说一下常见的spring提供在各层次的技术:

  1.dao层有spring jdbc的支持,对jdbc的技术进行了封装

  2.orm的hibernate和ibatis,spring是提供了整合的一个支持

  3.Web包含了我们的struts和即将要讲解的springmvc

  4.core就是我们的spring容器

 

  springmvc跟spring是啥关系呢?springmvc是spring大框架其中的一个小框架或模块,也意味着后期整合的时候无需整合层(整合包)整合两者

• 提醒一下,可能大家没有接触springmvc前对它的印象是覆盖三层web,service,dao,其实不是的,它是web层的一个框架,在web层体现了mvc的设计模式,跟整个项目的mvc分层没啥关系!mvc的设计模式它可以体现在整个项目,也可以设计在一个模块里,比如我们之前学的struts2,也是有体现该模式:strutsmvc

• 为了让大家更能理解springmvc,我们先简单看下mvc设计模式,看图:

 

 spring,struts2,hibernate框架在mvc的应用:

 

struts2中的mvc设计:

 

springmvc的架构图:

 讲解架构流程之前,说一下适配器,适配器是需要跟特定的类或接口配对的,不同的适配器能够处理不同的类或接口,就很像变压器,根据目的的不同,将电压调整为适当的值!下面开始讲解架构各个部分以及流程:

  > DispatcherServlet是前端控制器,是整个springmvc的调度中心,主要是接收请求,请求别人处理数据,响应结果等作用(不需要程序员开发)

  >HandlerMapping是处理器映射器,它根据请求的url(Handler的url可通过在xml或注解来配置)在spring容器查找有没有符合url的方法的handler(不需要程序员开发)

  >HandlerExcutionChain,它可以理解为返回处理后的结果链,这个里面主要分两种:HandlerInterceptor处理器拦截器(一般有多个,在执行处理器之前进行预处理和后处理操作),Handler处理器(不需要程序员开发)

  >HandlerAdapter是处理器适配器,用来执行Handler处理器,不同的适配器能处理不同的处理器(不需要程序员开发)

  >Handler是处理器,它是我们主要写代码的地方,类似struts2时候的action,javaweb时的servlet,在项目的分层中它属于controller层,它必须按照适配器的指定规范来写,否则它就不是一个处理器(需要程序员开发)

  >ModelAndView是springmvc的一个底层对象,我们从数据库获取的数据以及视图的信息(url路径)存储在该对象中(需要我们创建)

  >ViewResolver是视图解析器,将ModelAnDView对象中的视图信息解析成一个View对象(其实就是拿到JSP,FrameMarker等视图的路径并解析成一个对应的JSP对象等或者说根据路径将对应的视图加载到内存当中形成一个view对象)(不需要程序员开发)

  >view是一个接口,支持不同的view类型,包含jsp,pdf等视图,不同类型的view需要不同的ViewResolver来解析(不需要程序员开发,但是jsp页面啥的必须得自己写,只是对象不写而已)

 

上面对各个对象进行一个解释后,准备讲解流程:

  1.请求发送到我们的服务器的第一道大门 DispatcherServlet

  2. DispatcherServlet调用HandlerMapping处理器映射器获取Handler处理器

  3.HandlerMapping返回一个执行链,包含处理器拦截器和处理器对象

  4.DispatcherServlet拿到Handler之后,交给HandlerAdapter去执行

  5.HandlerAdapter执行Handler

  6.Handler返回一个modelAndView对象,通过对象名可知对象中包含数据库和视图的信息

  7.HandlerAdapter返回modelAndView对象给DispatcherServlet

  8.DispatcherServlet把modelAndView交给ViewResolver视图解析器去解析该对象,说白了就是提取jsp等视图url并解析成一个view对象

  9.view对象会自己的方法进行渲染,其实是将modelAndView里面的model数据提取放到request域中,视图从request域中拿到数据形成一个完整的静态页面html

  10.返回给DispatcherServlet一个View对象

  11.响应html给客户端

posted @ 2020-05-25 23:08  爱编程DE文兄  阅读(300)  评论(0编辑  收藏  举报