SpringMVC运行原理图:
以上的①-③是我们程序员做的,剩余的都是springmvc框架做的,对应代码如下:
个人总结:
SpringMvc将代码web代码运行过程封装成一个个的对象
1、映射关系从具体到抽象,面向接口编程HandlerMapping接口
通过映射关系寻找地址对应的具体类,之前使用的是<servlet-mapping>进行具体的地址拦截和<servlet>指定具体的Servlet类。
现在springmvc使用HandlerMapping接口(处理映射器),<servlet-mapping>对出.jsp之外的所有进行拦截,<servlet>指定外观类DispatcherServlet类。
2、外观类DispathcerServlet操作具体类的时候,统一面向一个抽象HandlerAdapter接口,运用了依赖倒置原则的编程思想,并使用了适配器模式。
找到具体类之后由tomcat服务器通过反射创建对象实例,并调取对象的service方法。然后servlet具体类中再调取业务逻辑层service。
现在springmvc找到具体类之后通过适配模式,找到实现了规则的类,即实现了controller接口的类,然后执行controller具体类,然后controller具体类中再调取业务逻辑层service。
3、返回的结果也是一个对象,更加符合面向对象思想
controller返回的结果是一个对象,里面包含数据和要跳转的具体页面。