zoukankan      html  css  js  c++  java
  • 手写MVC框架(一)-再出发

    背景

    前段时间把之前写的DAO框架(手写DAO框架(一)-从“1”开始)整理了一下,重构了一版。整理过程中看以前写的代码,只是为了了解实现,只是为了实现,代码写的有点粗糙。既然已经整理了DAO框架,索性继续整理一下MVC框架(https://github.com/shuimutong/zxmvc.git),所谓温故知新也。

    一、关于Servlet

    1、简介

    学习web的时候,一般都是先学Servlet

    通过Servlet可以接受到http请求,并进行响应

    这个时候,是不需要struts、SpringMVC等框架的

    2、tomcat、jetty

    web应用服务器

    servlet容器

    servlet需要运行在容器里

    3、servlet生命周期

    1)服务启动时加载servlet

    2)第一次请求时

    2.1)实例化servlet

    2.2)执行init方法

    3)调用service方法,判断请求的类型

    3.1)get类型则调用doGet方法

    3.2)post类型则调用doPost方法

    4)服务重启或者关闭时,调用destroy方法

    二、MVC框架

    Model(模型)

    应用程序中用于处理应用程序数据逻辑的部分

    View(视图)

    应用程序中处理数据显示的部分

    Controller(控制器)

    应用程序中处理用户交互的部分

    三、SpringMVC

    1、概述

    Controller接收请求,然后返回ModelAndView

    2、请求处理流程

    1)SpringMVC将所有的请求提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理

    2)DispatcherServlet查询HandleMapping,找到处理请求的Controller

    3)DispatcherServlet将请求提交到目标Controller

    4)Controller进行业务逻辑处理后,返回一个ModelAndView

    5)DispatcherServlet查询ViewResolver视图解析器,找到ModelAndView对象指定的视图对象

    6)将页面渲染到浏览器端

    3、思考

    1)关于视图解析器

    之前的页面经常用到freeMarker、jsp等,需要经过视图解析器解析成Html

    个人觉得上面两种方式,还不如直接html,通过js刷页面来的直观

    自己写MVC框架,可以先实现MC,V暂时用html

    2)主要功能

    封装了servlet

    IOC:实例管理

    AOP:动态代理、cglib

    四、实现思路

    1、如何接收请求,分发请求

    类似DispatcherServlet

    服务初始时扫描所有URI,并放入一个URIMAP中

    定义一个Servlet来接收所有请求

    根据请求URL匹配URIMAP中对应的Controller

    将请求分发给对应的Controller

    2、IOC如何实现

    注解形式

    定义需要的注解

    服务启动时,扫描注解的类

    将注解的类根据依赖(通过反射)进行实例化

    3、AOP

    暂缓实现

    五、实现概述

    1、实现注解

    1)各层注解

    Controller、Service、Repository、Component

    2)自动注入注解

    Autowired

    3)URI注解

    RequestMapping

    2、扫描注解类

    扫描填写的URI

    3、实现DispatcherServlet

    1)接收请求

    2)分发请求

    附脑图:

    下篇:手写MVC框架(二)-代码实现和使用示例

  • 相关阅读:
    Node.js理解
    PayPal为什么从Java迁移到Node.js
    移动开发技巧总结
    Flex性能调优相关的一些总结
    Flex组件的生命周期
    Adobe Flash Builder 4.7 新功能详解
    【Django】Cookie
    【Django】路由系统
    【Django】视图系统
    【Django】ORM操作#2
  • 原文地址:https://www.cnblogs.com/shuimutong/p/11456831.html
Copyright © 2011-2022 走看看