MVC框架设计实现及SpringMVC源码分析

2022-03-20  本文已影响0人  极速魔法

SpringMVC基础

Spring MVC本质是对 servlet的封装,简化了 Servlet的开发

经典三层

MVC

Spring MVC 核心三大组件

url-pattern配置

监听器、过滤器和拦截器对⽐

自定义拦截器

  1. 实现 /HandlerInterceptor/接口
  2. 注册
<mvc:interceptors>
    <mvc: interceptor>
<!-- 拦截所有 ** 代表当前目录及其子目录的所有URL -->
        <mvc:mapping path="/**" />
        <bean class="xx" />
    </mvc: interceptor>
</mvc:interceptors>

异常处理机制

// 异常处理器 写在 Controller中只对当前Controller生效
@ExceptionHandler(ArithmeticException.class)
public void handleExecption(ArithmeticException exception,HttpServletResponse resp) {
        ...

}
// 捕获所有Controller对象Handler 方法抛出的异常
@ControllerAdvice
public Class GlobalExceptionResolver {
        // 处理具体的异常          @ExceptionHandler(ArithmeticException.class)
        public void handleExecption(ArithmeticException exception,HttpServletResponse resp) {
        ...

    }
}

自定义MVC框架

步骤

  1. Tomcat 加载web.xml ,前端控制器 DispatchServlet 加载指定的配置文件 springmvc.xml
  2. 包扫描,扫描注解
    获取包磁盘路径, 扫描的是 .class结尾的文件
Threa.currentThread().getContextClassLoader().getResource(".").getPath()+packageName.replaceAll("\\.","/");
  1. IOC容器Bean初始化和依赖注入维护
  2. 建立 URL 和method 之间的映射关系
  3. 等待请求,处理请求

Spring MVC源码解析

doDispatch方法核心步骤

  1. 调用 getHandler() 获取 请求的执行链 HandlerExecutionChain
  2. 调用getHandlerAdapter() 获取 步骤1 中 Handler适配器
  3. 适配器调用Handler执行 ha.handle,返回 ModelAndView对象
  4. 调用 processDispatchResult()方法完成 视图渲染 跳转

SpringData

SpringDataJpa

spring基于 jpa规范的基础上封装的一套 JPA应用框架,简化数据库的访问和操作

上一篇 下一篇

猜你喜欢

热点阅读