Java 杂谈Java源码

简易MVC实现

2019-01-14  本文已影响29人  大黑跟小白的日常

简易MVC实现

大致流程梳理

    1、加载基础包下所有带有@Action(类似@Controller)的类的Class对象,到一个List;

    2、遍历所有Class对象;

    3、逐个Class获取里面的Method[]对象;

    4、遍历Method[];

    5、判断如果Method带有注解@Request.GET(类似@RequestMapping),则需要将 请求方式、请求路径 封装成对象K,将Action的Class对象、Method方法对象封装成对象V(handler),将K、V存入一个映射actionMap;

    6、真实请求进来以后,在重写的HttpServlet的service方法中,选择handler;

    7、根据请求路径、请求方式,遍历actionMap,选择出对应的handler返回给service方法中;

    8、根据action的Class对象,从IOC容器中获取actionInstance;

    9、获取request、url中的参数(之前匹配actionMap获取指定handler判断时,已经将URL中的参数存入handler的matcher属性中)列表,并且整合参数列表actionMethodParamList;

    10、检查参数列表跟handler中Method方法参数是否匹配;

    11、反射执行。actionMethod.invoke(actionInstance,  actionMethodParamList.toArray());

    12、根据执行的result、request,封装返回视图到response;

代码分析

1、加载基础扫描包路径下的所有带有@Action注解的Class对象;

至此,MVC大致内容基本实现。

全篇讲解,基于黄勇老师的smart-framework


AOP待续...

上一篇下一篇

猜你喜欢

热点阅读