Spring MVC 4.2.4.RELEASE 中文文档
  • Introduction
  • Part I: 目录与翻译注记(Table of contents and Notes)
    • 目录
    • 翻译注记
  • Part II: 文档内容(Documentation contents)
    • Spring Web MVC框架简介
      • Spring Web MVC的新特性
      • 允许其他MVC实现
    • DispatcherServlet
      • WebApplicationContext中特殊的Bean类型
      • 默认的DispatcherServlet配置
      • DispatcherServlet的处理流程
    • 控制器的实现
      • 使用@Controller注解定义一个控制器
      • 使用@RequestMapping注解映射请求路径
      • 定义@RequestMapping注解的处理方法
      • 异步请求的处理
      • 对控制器测试
    • 处理器映射
      • 使用HandlerInterceptor拦截请求
    • 视图解析
      • 使用ViewResolver接口解析视图
      • 视图链
      • 视图重定向
      • 内容协商解析器ContentNegotiatingViewResolver
    • 使用闪存属性FlashAttributes
    • URI构造
      • 为控制器和方法指定URI
      • 在视图中为控制器和方法指定URI
    • 地区信息
      • 获取时区信息
      • Accept请求头解析器AcceptHeaderLocaleResolver
      • Cookie解析器CookieLocaleResolver
      • Session解析器SessionLocaleResolver
      • 地区更改拦截器LocaleChangeInterceptor
    • 主题 themes
      • 关于主题:概览
      • 定义主题
      • 主题解析器
    • Spring的multipart(文件上传)支持
      • 概述
      • 使用MultipartResolver与Commons FileUpload传输文件
      • Servlet 3.0下的MultipartResolver
      • 处理表单中的文件上传
      • 处理客户端发起的文件上传请求
    • 异常处理
      • 处理器异常解析器HandlerExceptionHandler
      • @ExceptionHandler注解
      • 处理一般的Spring MVC异常
      • 使用@ResponseStatus注解业务异常
      • Servlet默认容器错误页面的定制化
    • Web安全
    • "约定优于配置"的支持
      • 控制器类名-处理器映射ControllerClassNameHandlerMapping
      • 模型ModelMap(ModelAndView)
      • 视图-请求与视图名的映射
    • HTTP缓存支持
      • HTTP请求头Cache-Control
      • 对静态资源的HTTP缓存支持
      • 在控制器中设置Cache-Control、ETag和Last-Modified响应头
      • 弱ETag
    • 基于代码的Servlet容器初始化
    • 配置Spring MVC
      • 启用MVC Java编程配置或MVC命名空间
      • 默认配置的定制化
      • 转换与格式化
      • 验证
      • 拦截器
      • 内容协商
      • 视图控制器
      • 视图解析器
      • 资源的服务
      • 回到默认的Servlet来进行资源服务
      • 路径匹配
      • 消息转换器
      • 使用MVC Java编程进行高级定制
      • 使用MVC命名空间进行高级定制
Powered by GitBook
On this page

Was this helpful?

  1. Part II: 文档内容(Documentation contents)
  2. 配置Spring MVC

启用MVC Java编程配置或MVC命名空间

要启用MVC Java编程配置,你需要在其中一个注解了@Configuration的类上添加@EnableWebMvc注解:

@Configuration
@EnableWebMvc
public class WebConfig {

}

要启用XML命名空间,请在你的DispatcherServlet上下文中(如果没有定义任何DispatcherServlet上下文,那么就在根上下文中)添加一个mvc:annotation-driven元素:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven/>

</beans>

上面的简单的声明代码,就已经默认注册了一个RequestMappingHandlerMapping、一个RequestMappingHandlerAdapter,以及一个ExceptionHandlerExceptionResolver,以支持对使用了@RequestMapping、@ExceptionHandler及其他注解的控制器方法的请求处理。

同时,上面的代码还启用了以下的特性:

  1. HTTP消息转换HttpMessageConverter的支持,对注解了@RequestMapping或@ExceptionHandler方法的@RequestBody方法参数或@ResponseBody返回值生效

下面给出了一份由mvc:annotation-driven注册可用的HTTP消息转换器的完整列表:

  1. 转换字节数组的ByteArrayHttpMessageConverter

  2. 转换字符串的StringHttpMessageConverter

  3. ResourceHttpMessageConverter:org.springframework.core.io.Resource与所有媒体类型之间的互相转换

  4. SourceHttpMessageConverter:从(到)javax.xml.transform.Source的转换

  5. FormHttpMessageConverter:数据与MultiValueMap<String, String>之间的互相转换

  6. Jaxb2RootElementHttpMessageConverter:Java对象与XML之间的互相转换——该转换器在classpath路径下有JAXB2依赖并且没有Jackson 2 XML扩展时被注册

  7. MappingJackson2HttpMessageConverter:从(到)JSON的转换——该转换器在classpath下有Jackson 2依赖时被注册

  8. AtomFeedHttpMessageConverter:Atom源的转换——该转换器在classpath路径下有Rome时被注册

  9. RssChannelHttpMessageConverter:RSS源的转换——该转换器在classpath路径下有Rome时被注册

该builder会使用以下的默认属性对Jackson进行配置:

同时,如果检测到在classpath路径下存在这些模块,该builder也会自动地注册它们:

Previous配置Spring MVCNext默认配置的定制化

Last updated 5 years ago

Was this helpful?

Spring 3风格的类型转换支持。这是使用一个配置的转换服务实例,以及the JavaBeans PropertyEditors used for Data Binding.

使用@NumberFormat对数字字段进行,类型转换由ConversionService实现

使用@DateTimeFormat注解对Date、Calendar、Long及Joda Time类型的字段进行

使用@Valid注解对@Controller输入进行——前提是classpath路径下比如提供符合JSR-303规范的验证器

MappingJackson2XmlHttpMessageConverter:从(到)XML的转换——该转换器在classpath下有时被注册

你可以参考一小节,了解如何进一步定制这些默认的转换器。

Jackson JSON和XML转换器是通过创建的ObjectMapper实例创建的,目的在于提供更好的默认配置

禁用

禁用

: 支持Java 7的一些类型,例如java.nio.file.Path

: 支持Joda-Time类型

: 支持Java 8的Date & Time API类型

: 支持Java 8其他的一些类型,比如Optional等

ConversionService
格式化
格式化
验证
Jackson 2 XML扩展
21.16.12 消息转换器
Jackson2ObjectMapperBuilder
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
MapperFeature.DEFAULT_VIEW_INCLUSION
jackson-datatype-jdk7
jackson-datatype-joda
jackson-datatype-jsr310
jackson-datatype-jdk8