Spring MVC的工作机制与设计模式

    xiaoxiao2025-05-04  10

    基于Java的MVC框架很多,主流的是Spring MVC和Struts。因为Spring MVC可以与Spring无缝连接,所以Spring MVC发展很快,所占份额也比较大。

    Spring MVC的总体设计

    要使用Spring MVC只要在web.xml文件中配置一个DispatcherServlet。使用Spring MVC非常简单,只要扩展一个路径映射关系;定义一个视图解析器;再定义一个业务逻辑的处理流程规则。 DispatcherServlet类继承HttpServlet,在Servlet的init方法调用时DispatcherServlet执行Spring MVC的初始化工作 在Spring MVC框架中,有三个组件是用户必须要定义和扩展的:

    定义URL映射规则实现业务逻辑的Handler实例对象渲染模板资源

    DispatcherServlet的启动

    HttpServlet初始化调用了HttpServletBean的init方法,该方法的作用获取Servlet中的init参数,并创建一个BeanWrapper对象,然后子类处真正执行BeanWrapper的初始化工作。Spring容器的创建是在FrameworkServlet的initServletBean()方法中完成的,这个方法会创建WebApplicationContext对象,并调用refresh其refresh()方法来完成配置文件的加载;Spring容器在加载时会调用DispatcherServlet的initStrategies方法来完成在DispatcherServlet中定义的初始化工作。

    Control设计

    Spring MVC的Control主要由handlerMapping和HandlerAdapters两个组件提供。

    HandlerMapping负责映射用户的URL和对应的处理类,在处理链中添加任意的HanderAdapters实例来处理这个URL对应的请求,类似于Servlet规范中的Filter处理类。

    HandlerMapping初始化

    HandlerAdapter初始化

    可以完成URL与Handler的映射关系,那么HandlerAdapter可以帮助自定义各种Handler。

    Control的调用逻辑

    首先调用DispatcherServlet的doService方法开始,接着调用doDispatch方法。

    Model设计

    Model通常在渲染页面和业务逻辑曾需要用到。 ModelAndView对象是连接业务逻辑层与View展现层的桥梁,对SpringMVC来说也是连接Handler与View的桥梁。

    View设计

    对Spring MVC的View的模块来说,有两个组件支持,分别是RequestToViewNameTranslator和ViewResolver。

    RequestToViewNameTranslator支持用户自定义对ViewName的解析ViewResolver根据ViewName创建一个View对象,调用View对象的void render(Map model,HttpServletRequest request,HttpServiceResponse response)方法来渲染页面

    模板模式

    形成大体的结构每个人根据自己的需求去开发。大的逻辑已经定义,不同的实现方法的有所有不同

    模板模式的结构

    Abstract(抽象模板):定义了完整的框架,方法的调用顺序通常已经确定,但是还是定义一些抽象方法给子类去实现Concrete(具体模板实现类):实现抽象模板中定义的抽象方法,实现具体的共嗯那个组成一个完整逻辑。
    最新回复(0)