简易MVC实现

简易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待续...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容