二、SpringMVC实现原理

SpringMVC实现原理

一、初始化工作

    1.根据Spring IOC 的思路,需要将参与业务的对象全部创建并保存,共流程调用。所以首先我们需要创建Controller对象,Http请求是通过注解找到对应的Controller对象,所以我们需要将所有的Controller与其注解建立关联。

    2.Controller 的Method 也是通过注解与HTTP请求映射的,同样的,我们需要将所有的Method与其注解建立关联,HTTP直接通过注解的值找到对应的Method.

    3.实例化视图解析器

        1.DispatcherServlet接受请求,通过映射从IOC容器中获取对应的Controller对象

        2.根据映射获取Controller对象对应的Method

        3.调用Method,获取返回值

        4.将返回值传给视图解析器,返回物理视图

        5.完成页面的跳转

二、创建MyDispatcherServlet

    1).init方法完成初始化:

        1.将Controller与注解进行关联,保存到IOC Container中,同时满足两点:一点:springMVC.xml中配置扫描的类;二点:类定义处添加注解

        Controller对象代码思路:

            (1)解析springMVC.xml

            (2)获取component-scan标签配置的包下的所有类

            (3)判断若这些类添加了@MyController 注解,则创建实例对象,并保存到iocContainer中

            (4)@MyRequestMapping的值为键,Controller对象为值

        将Controller中的Method与注解进行关联,保存到handlerMapping中,代码思路:

            (1)遍历iocContainer中的Controller实例对象

            (2)遍历每一个Controller对象的Method

            (3)判断Method是否添加了@MyRequestMapping注解,若添加,则进行映射并保存

            (4)保存到handlerMapping中,@MyRequestMapping的值为键,Method为值

        实例化ViewResolver,代码思路:

            (1)解析springMVC.xml

            (2)根据bean标签的class属性获取需要实例化的MyViewResolver

            (3)使用反射创建实例化对象,同时获取prefix和suffix属性,以及setter方法

            (4)使用反射调用setter方法给属性赋值,完成MyViewResolver的实例化。

        doPost方法处理HTTP请求:

            (1)解析HTTP,分别得到Controller和Method对应的uri

            (2)通过uri分别在iocContainer和handlerMapping中获取对应的Controller以及Method

            (3)使用反射调用Method,执行业务方法,获取结果

            (4)结果传给MyViewResolver进行解析,返回真正的物理视图

            (5)页面跳转

              

        

        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值