欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring MVC扩展和SSM整合

程序员文章站 2022-06-05 21:13:30
JSON对象的处理 简述@ResponseBody注解的用法 @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图 ......

JSON对象的处理

简述@ResponseBody注解的用法

 @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。@ResponseBody都会在异步获取数据时使用,被其标注的处理方法返回的数据将输出到相应流中,客户端获取并显示数据。

解决JSON数据传递的中文乱码问题 原因: 消息转换器(StringHttpMessageConverter)中固定了转换字符编码为“ISO-8859-1” 解决方案一: @RequestMapping(value="/view", method=RequestMethod.GET, produces={"application/json;charset=UTF-8"}) 简单实用,并可做到灵活处理

解决方案二 装配消息转换器StringHttpMessageConverter,设置字符编码为UTF-8 supportedMediaTypes属性 指定媒体类型:application/json 字符编码:UTF-8 一次配置,永久搞定

解决JSON数据传递的日期格式问题

日期格式:时间戳  “yyyy-MM-dd” 解决方案一: 注解方式:@JSONField(format= "yyyy-MM-dd")

解决方案二

配置FastJson的消息转换器-FastJsonHttpMessageConverter 设置features属性:指定输出时的日期转换器为WriteDateUseDateFormat FastJson规定了默认的返回日期类型DEFFAULT_DATE_FORMAT:yyyy-MM-dd HH:mm:ss故对于特殊类型字段,可使用@JSONField来控制

对于JSON数据中的日期格式处理(FastJson) 默认输出时间戳 转换输出yyyy-MM-dd HH:mm:ss格式的日期 配置消息转换器中的<value>WriteDateUseDateFormat</value> 注解优先( yyyy-MM-dd ) 配置消息转换器中的<value>WriteDateUseDateFormat</value> 增加属性注解@JSONField(format="yyyy-MM-dd")

配置多视图解析器2

<property name="mediaTypes">

  <map> <entry key="html" value="text/html;charset=UTF-8"/>

     <entry key="json" value="application/json;charset=UTF-8"/>

    <entry key="xml" value="application/xml;charset=UTF-8"/>

  </map>

</property>

ContentNegotiatingViewResolver favorParameter 默认为true,表示支持参数匹配,可以根据请求参数的值确定MIME类型,默认的请求参数为format,如: /user/view?id=12&format=json mediaTypes 根据请求参数值和MIME类型的映射列表 viewResolvers 网页视图解析器

通过ContentNegotiatingViewResolver,其中就达到了同一资源根据相同的URL地址访问,并通过设置MIME格式控制器端返回的数据格式,从而获取不同形式的返回内容。其实这REST的编程风格。

数据转换和格式化

在Spring MVC中时间数据无法实现自动转换绑定 解决方案 必须要进行手动配置自定义数据类型的绑定才能实现该功能 数据转换和格式化

数据绑定流程

spring MVC扩展和SSM整合

 

 

DataBinder 数据绑定的核心部件 核心调度 ConversionService Spring类型转换体系的核心接口 解决前台form表单中时间字符串到后台Date数据类型的转换问题 配置了<mvc:annotation-driven/>标签,并没有配置ConversionService,也能通过格式化注解来解决日期的转换问题 <mvc:annotation-driven/>标签 DefaultAnnotationHandlerMapping AnnotationMethodHandlerAdapter FormattingConversionServiceFactoryBean

注意:标注了@InitBinder注解的方法会在控制器初始化时调用

 SSM框架整合

新建Web Project,导入相关jar文件

配置web.xml

配置文件(/resources) database.properties

log4j.properties

mybatis-config.xml

  配置typeAliases

  设置全局性懒加载

  applicationContext-mybatis.xml

  springmvc-servlet.xml

applicationContext-mybatis.xml

 数据源相关配置

事务管理

配置SqlSessionFactoryBean

配置MapperScannerConfigurer

springmvc-servlet.xml

配置<mvc:annotation-driven/>标签(包括消息转换器配置)

通过<mvc:resources/>标签配置静态文件访问

配置支持文件上传- multipartResolver

配置多视图解析器-ContentNegotiatingViewResolver

配置拦截器-interceptors

  

基于HandlerMapping,对请求实施拦截,根据业务需求,基于不同的HandlerMapping定义多个拦截器

HandlerInterceptor接口 preHandle() postHandle() afterCompletion()

自定义拦截器的配置-SysInterceptor