📜  Spring-MVC框架(1)

📅  最后修改于: 2023-12-03 15:35:03.863000             🧑  作者: Mango

Spring-MVC框架

Spring-MVC框架是基于MVC设计模式的web框架,它是Spring Framework的一个重要模块,与Spring框架紧密结合,提供基于组件的Web框架。

MVC设计模式

MVC是Model-View-Controller的缩写,它是一种设计模式,可以有效地将应用程序的输入、处理、和输出分离开,从而使应用程序更加容易扩展、维护和测试。

  • Model: 模型层表示应用程序的业务逻辑,并负责数据的读取和存储。
  • View: 视图层负责将模型层的数据显示出来,并与用户进行交互。
  • Controller: 控制层负责将用户的请求路由到相应的模型层进行处理,并将处理的结果返回给视图层进行显示。
Spring-MVC框架

Spring-MVC框架是一个灵活的、模块化的web框架,它提供了许多现代web应用程序所需的功能,例如:请求路由、控制器、视图解析、数据绑定、表单处理、异常处理、拦截器、国际化、文件上传等等。

架构图

Spring-MVC框架的架构图如下:

Spring-MVC架构图

  • DispatcherServlet: 是Spring-MVC框架的中央控制器,负责请求的调度和处理。它接收HTTP请求,并根据请求的URL调用对应的Controller进行处理,然后将处理结果返回给客户端。
  • HandlerMapping: 负责将HTTP请求映射到对应的Controller。
  • Controller: 负责处理具体的业务逻辑,并返回ModelAndView对象,包含了模型数据和视图名称。Controller的实现可以是POJO、Servlet、或者是Annotation-based。
  • ViewResolver: 负责将逻辑视图名称解析为具体的视图实现,例如JSP、FreeMarker、Velocity等。
  • View: 负责渲染ModelAndView对象,并将渲染结果返回给客户端。View的实现可以是JSP、HTML、XML、JSON等。
基于注解的配置

Spring-MVC框架支持基于XML和基于注解的配置,其中基于注解的配置更加简单和易于维护。下面是一个基于注解的Spring-MVC配置示例:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controller")
public class MvcConfig implements WebMvcConfigurer {

  @Override
  public void configureViewResolvers(ViewResolverRegistry registry) {
    registry.jsp().prefix("/WEB-INF/views/").suffix(".jsp");
  }

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
  }

  @Override
  public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
  }
}

这个配置类中使用了@Configuration@EnableWebMvc@ComponentScan注解。@Configuration用于指示该类是一个Java配置类,@EnableWebMvc用于启用Spring-MVC框架的关键组件,@ComponentScan用于扫描指定包中的所有Controller。

在这个配置类中,还实现了WebMvcConfigurer接口中的方法,并分别为视图解析器、资源处理器和默认Servlet处理器进行了配置。

总结

Spring-MVC框架是一个优秀的、灵活的、模块化的web框架,它遵循MVC设计模式、提供了许多现代web应用所需的功能,并且可以通过基于XML或者基于注解的方式进行配置。如果你正在寻找一款易于使用、易于扩展、以及支持丰富功能的web框架,那么Spring-MVC框架将是你的不二选择。