zoukankan      html  css  js  c++  java
  • SpringMVC 框架 组件细节 原理

    SSM(Spring+SpringMVC+MyBatis)

    Spring   Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。   Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。

    SpringMVC   SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。 mybatis   mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

    页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。 [1]

     

    1 Springmvc 框架原理

    • springmvc 是 spring 框架的一个模块, SpringMVC 和 spring 无需通过中间整合层进行整合

    • SpringMVC 是一个基于mvc 的 web 框架

    步骤

    1. 发起请求到前端控制器 (DispatcherServlet)

    2. 前端控制器请求 HandlerMapping 查找 Handler

      • 可以根据 xml 配置,注解进行查找

      1. 处理器 映射器 HandlerMapping 向前端控制器返回 Handler

      2. 前端控制器调用处理器适配器去执行 Handler

      3. 处理器适配器去执行 Handler

      4. Handler 执行完给适配器返回 ModelAndView

      5. 处理器适配器向前端控制器返回 ModelAndView

      • ModelAndView 是 SpringMVC 框架的一个底层对象 ,包括 View 和 Model

      1. 前端控制器请求视图解析器去进行视图解析

      • 根据逻辑视图名解析成真正的视图(jsp)

      1. 视图解析器向前端控制器返回 View

      2. 前端控制器进行视图渲染

      • 视图渲染将模型数据 (在 ModelAndView 对象中) 填充到 request 域

      1. 前端控制器向用户响应结果

      组件:
      1. 前端控制器 DispatcherServlet (不需要程序开发)

        • 作用 : 接受请求 , 相应结果 相当于转发器 , 中央处理器

        • 有了 DispatcherServlet 减少了其他组件之间的耦合度

      2. 处理器映射器 HandlerMapping (不需要程序员开发)

        • 作用 : 根据请求的 url 查找 Handler

        • 处理器 Handler (需要程序员开发)

      3. 处理器适配器 HandlerAdapter

        • 作用 : 按照特定规则 (HandlerAdapter 要求的规则 )去执行 Handler

        • 注意 : 编写 Handler 时按照 HandlerAdapter 的要求去做, 这样适配器才可以去正确执行 Handler

      4. 视图解析器 View resolver (不需要程序员开发)

        • 作用 : 进行视图解析, 根据逻辑视图名解析成真正的视图 (View)

      5. 视图 View (需要程序员来开发 jsp )

        • View 是一个接口, 实现类支持不同的 View 类型 (jsp,freemarker,pdf....)

  • 相关阅读:
    【数论】无平方因子的数
    【图论】【二叉树】以先序字符串方式建立二叉树
    Dev-c++使用方法?Dev-c++怎么用?这里都有啦
    【图论】【二叉树】以括号形式输出二叉树
    【NOIP2016普及组】复赛——魔法阵
    【NOIP2016普及组】复赛——海港
    python爬虫——web前端基础(3)
    python爬虫——web前端基础(2)
    python爬虫——web前端基础(1)
    python 合并两个文件并将合并内容保存在另一个文件中
  • 原文地址:https://www.cnblogs.com/lszbk/p/12827746.html
Copyright © 2011-2022 走看看