[全家桶之SpringMVC]SpringMVC 的模块和结构

目录

SpringMVC的模块

Web模块

WebMVC模块

SpringMVC的结构


SpringMVC的模块

SpringMVC的模块主要包括以下几个:

  • Web模块:这个模块提供了Spring对Web项目的支持,包括文件上传、异常处理、国际化、主题等功能。
  • WebMVC模块:这个模块是SpringMVC的核心,它包含了前端控制器、处理器映射器、处理器适配器、视图解析器等组件,以及对RESTful风格的URL、数据绑定、校验、拦截器等功能的支持。
  • WebServlet模块:这个模块提供了一些与Servlet相关的类和接口,例如DispatcherServlet、HttpServletBean等。
  • WebPortlet模块:这个模块提供了与Portlet相关的类和接口,例如DispatcherPortlet、PortletMVC注解等。

下面我们来详细介绍一下这些模块中的一些重要的组件和功能。

Web模块

Web模块是Spring对Web项目的支持,它提供了以下一些功能:

  • 文件上传:Spring提供了一个MultipartResolver接口,用于解析multipart请求,即包含文件上传的请求。Spring提供了两个实现类:CommonsMultipartResolver和StandardServletMultipartResolver,分别基于Apache Commons FileUpload和Servlet 3.0规范实现文件上传功能。
  • 异常处理:Spring提供了一个HandlerExceptionResolver接口,用于处理Controller中抛出的异常。Spring提供了几个实现类,如SimpleMappingExceptionResolver、AnnotationMethodHandlerExceptionResolver等,可以根据异常类型或注解来映射到不同的错误页面或返回不同的错误信息。
  • 国际化:Spring提供了一个LocaleResolver接口,用于解析用户的语言和地区信息。Spring提供了几个实现类,如CookieLocaleResolver、SessionLocaleResolver等,可以根据Cookie或Session来存储和获取用户的语言和地区信息。Spring还提供了一个MessageSource接口,用于加载国际化资源文件,并根据LocaleResolver返回的Locale对象来获取相应的国际化信息。
  • 主题:Spring提供了一个ThemeResolver接口,用于解析用户的主题信息。Spring提供了几个实现类,如CookieThemeResolver、SessionThemeResolver等,可以根据Cookie或Session来存储和获取用户的主题信息。Spring还提供了一个ThemeSource接口,用于加载主题资源文件,并根据ThemeResolver返回的Theme对象来获取相应的主题信息。

WebMVC模块

WebMVC模块是SpringMVC的核心,它包含了以下一些组件和功能:

  • 前端控制器:DispatcherServlet是一个Servlet,它负责接收和分发请求。它是整个SpringMVC框架的入口点,它会调用其他组件来完成请求处理。
  • 处理器映射器:HandlerMapping是一个接口,它负责根据请求的URL找到对应的处理器Handler(也就是Controller)。Spring提供了几个实现类,如BeanNameUrlHandlerMapping、RequestMappingHandlerMapping等,可以根据Bean名称或注解来映射到不同的Handler。
  • 处理器适配器:HandlerAdapter是一个接口,它负责根据HandlerMapping返回的Handler执行相应的方法,并返回一个ModelAndView对象,包含了数据和视图信息。Spring提供了几个实现类,如HttpRequestHandlerAdapter、RequestMappingHandlerAdapter等,可以根据Handler的类型或注解来执行不同的方法。
  • 视图解析器:ViewResolver是一个接口,它负责根据ModelAndView中的视图名找到对应的视图对象View(例如JSP页面)。Spring提供了几个实现类,如InternalResourceViewResolver、FreeMarkerViewResolver等,可以根据视图名的后缀或前缀来解析到不同的视图对象。
  • 视图对象:View是一个接口,它负责渲染数据到页面,并返回给用户。Spring提供了几个实现类,如InternalResourceView、FreeMarkerView等,可以根据不同的模板技术来渲染页面。

除了这些组件外,WebMVC模块还提供了以下一些功能:

  • RESTful风格的URL:Spring支持使用@PathVariable注解来获取URL中的变量,例如/user/{id},可以通过@PathVariable(“id”)来获取id的值。Spring还支持使用@RequestBody和@ResponseBody注解来处理请求和响应的数据,例如可以使用@RequestBody来接收JSON格式的数据,并使用@ResponseBody来返回JSON格式的数据。
  • 数据绑定:Spring支持使用@ModelAttribute注解来绑定请求参数到JavaBean对象,例如可以使用@ModelAttribute(“user”) User user来接收表单提交的user对象。Spring还支持使用@InitBinder注解来自定义数据绑定的规则,例如可以使用@InitBinder来注册自定义的类型转换器或校验器。
  • 校验:Spring支持使用@Valid注解来启用JavaBean对象的校验,例如可以使用@Valid User user来校验user对象是否符合约束条件。Spring还支持使用BindingResult或Errors对象来获取校验结果和错误信息。
  • 拦截器:Spring支持使用HandlerInterceptor接口或@WebMvcConfigurer接口来定义拦截器,用于在请求处理前后进行一些额外的操作,例如日志记录、权限检查、性能监控等。Spring还支持使用@InterceptorRegistry类来注册拦截器,并指定拦截或排除的URL模式。

SpringMVC的结构

SpringMVC的结构可以用以下一张图来表示:(这个也是SpringMVC的启动流程,面试爱考)

[全家桶之SpringMVC]SpringMVC 的模块和结构_第1张图片

从上图可以看出,SpringMVC的工作流程大致如下:

  • 用户发送请求到前端控制器DispatcherServlet,它是一个Servlet,负责接收和分发请求。
  • DispatcherServlet调用处理器映射器HandlerMapping,它是一个接口,负责根据请求的URL找到对应的处理器Handler(也就是Controller)。
  • DispatcherServlet调用处理器适配器HandlerAdapter,它是一个接口,负责根据HandlerMapping返回的Handler执行相应的方法,并返回一个ModelAndView对象,包含了数据和视图信息。
  • DispatcherServlet调用视图解析器ViewResolver,它是一个接口,负责根据ModelAndView中的视图名找到对应的视图对象View(例如JSP页面)。
  • DispatcherServlet调用视图对象View,它是一个接口,负责渲染数据到页面,并返回给用户

                                                                                                                        春风得意马蹄疾,一日看尽长安花——孟郊

你可能感兴趣的:(spring全家桶,Java,SpringMVC,模块,结构)