一:springMvc的总体设计:

          要使用springmvc只需要在web.xml中配置一个DispatcherServlet.如下:

javaweb技术内幕(springMvc工作机制和设计模式)

再定义一个dispatcherServlet-servlet.xml配置文件:

javaweb技术内幕(springMvc工作机制和设计模式)

javaweb技术内幕(springMvc工作机制和设计模式)

简单的基于springMvc的应用创建完成。

二:工作原理主要看DispatcherServlet:结构图:

javaweb技术内幕(springMvc工作机制和设计模式)

DispatcherServlet类继承了HttpServlet,在Servlet的init方法调用时DispatcherServlet执行Spring Mvc的初始化工作,方法在initStrategies()方法中

javaweb技术内幕(springMvc工作机制和设计模式)

初始化解析:

javaweb技术内幕(springMvc工作机制和设计模式)

javaweb技术内幕(springMvc工作机制和设计模式)

  2.SpringMvc组件图:

      javaweb技术内幕(springMvc工作机制和设计模式)

     分析:SpringMvc框架中,有三个组件是用户必须要定义和拓展的:定义URL映射规则、实现业务逻辑的Handler实例对象、渲染模板资源。而连接Handler实例对象和渲染模板的纽带就是Model模型了

      DispatcherServlet启动时都做了什么?

        HttpServlet初始化调用了HttpServletBean的init方法,在该方法的作用是获取Servlet中的init参数,并创建一个BeanWrapper对象,然后由子类处真正执行BeanWrapper的初始化工作。但是HttpServletBean的子类FrameworkServlet和DispatcherServlert都没有覆盖其initBeanWrapper(bw)方法,所以创建的BeanWrapper对象没有任何作用,Spring容器也不是通过BeanWrapper来创建的

      Spring容器的创建是在FrameworkServlet的initServletBean()方法中完成的,这个方法会创建WebApplicationContext对象,并调用其refresh()方法来完成配置文件的加载,配置文件的加载同样是先查找Servlet的init-param参数中设置的路径,如果没有,会根据namespace+Servlet的名称来查找xml文件,spring容器加载时会调动DispatcherServlet的initStrategies方法来完成DispatcherServlet中定义的初始化工作。initStrategies方法中会初始化springMvc框架需要的8个组件,8个组件对应的8个Bean对象都保存在DispatcherServlet类中。

javaweb技术内幕(springMvc工作机制和设计模式)

这时DispatcherServlet这个Servlet已经初始化完成,SpringMvc也已经初始化完成,可以接受你的Http请求了。

 

 

 

 

 

 

 

相关文章:

  • 2022-12-23
  • 2021-08-13
  • 2021-08-16
  • 2021-05-31
  • 2021-07-30
  • 2022-01-06
  • 2021-11-12
  • 2021-08-04
猜你喜欢
  • 2021-05-24
  • 2021-05-24
  • 2022-12-23
  • 2021-11-10
  • 2021-06-29
  • 2021-04-15
  • 2021-05-25
相关资源
相似解决方案