六springMVC数据转换 jacson配置,json中的date由Date格式化输出

Posted 啄木鸟伍迪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了六springMVC数据转换 jacson配置,json中的date由Date格式化输出相关的知识,希望对你有一定的参考价值。

问题由来:

在页面获取列表时,页面列表常有修改时间,创建时间的显示;如果没有配置,则Date类型的数据,如创建时间,显示的是一个时间戳;每次都需要对Date类型的数据进行转换,非常麻烦,所以在这里配置了json自动转换Date格式的配置;

 

需要的jar包:

 <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
             <version>2.14.2</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
             <version>2.14.2</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.dataformat</groupId>
             <artifactId>jackson-dataformat-xml</artifactId>
             <version>2.14.2</version>
         </dependency>
         <dependency>
             <groupId>org.codehaus.woodstox</groupId>
             <artifactId>woodstox-core-asl</artifactId>
             <version>4.4.1</version>
         </dependency>
         <dependency>
             <groupId>com.fasterxml.jackson.module</groupId>
             <artifactId>jackson-module-parameter-names</artifactId>
             <version>2.14.2</version>
         </dependency>

 

只需要配置spring-mvc.xml文件即可实现:

spring-mvc.xml 日期格式转换配置:

    <mvc:annotation-driven conversion-service="conversionServiceFactoryBean">
          <mvc:message-converters>
             <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                 <property name="objectMapper" ref="objectMapper"/>
             </bean>
             <bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter">
                 <property name="objectMapper" ref="xmlMapper"/>
             </bean>
         </mvc:message-converters>
     
     </mvc:annotation-driven>
     <bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
       p:indentOutput="true"
       p:simpleDateFormat="yyyy-MM-dd HH:mm:ss"
       p:modulesToInstall="com.fasterxml.jackson.module.paramnames.ParameterNamesModule"/>
 
     <bean id="xmlMapper" parent="objectMapper" p:createXmlMapper="true"/>

spring-mvc.xml全部文件查看:

 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:cache="http://www.springframework.org/schema/cache" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
         http://www.springframework.org/schema/cache 
         http://www.springframework.org/schema/cache/spring-cache-4.3.xsd">
 
     <context:component-scan base-package="org.muses.ssm.demo.mgt.*">
         <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
     </context:component-scan>
 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="prefix" value="/WEB-INF/views/"></property>
         <property name="suffix" value=".jsp"></property>
     </bean>
 
     <!--配置SpringMVC的数据转换器 -->
     <bean id="conversionServiceFactoryBean" class="org.springframework.context.support.ConversionServiceFactoryBean">
         <property name="converters">
             <list>
                 <bean class="org.muses.ssm.demo.mgt.core.common.StringToDateConverter">
                     <property name="datePattern" value="yyyy-MM-dd"></property>
                 </bean>
                 <bean class="org.muses.ssm.demo.mgt.core.common.StringToIntegerConverter"></bean>
             </list>
         </property>
     </bean>
 
       <mvc:annotation-driven conversion-service="conversionServiceFactoryBean">
          <mvc:message-converters>
             <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                 <property name="objectMapper" ref="objectMapper"/>
             </bean>
             <bean class="org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter">
                 <property name="objectMapper" ref="xmlMapper"/>
             </bean>
         </mvc:message-converters>
     
     </mvc:annotation-driven>
     <bean id="objectMapper" class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"
       p:indentOutput="true"
       p:simpleDateFormat="yyyy-MM-dd HH:mm:ss"
       p:modulesToInstall="com.fasterxml.jackson.module.paramnames.ParameterNamesModule"/>
 
     <bean id="xmlMapper" parent="objectMapper" p:createXmlMapper="true"/>
     <mvc:default-servlet-handler />
     <mvc:resources mapping="/**" location="/WEB-INF/resource/" />
     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
         <property name="basename" value="i18n"></property>
     </bean>
     <!-- 多文件上传 -->
     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
         <property name="defaultEncoding" value="UTF-8"></property>
         <property name="maxUploadSize" value="1024000"></property>
     </bean>
     <!-- Spring提供的基于的Ehcache实现的缓存管理器 -->
     <bean id="cacheManagerFactory" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
         <property name="configLocation" value="classpath:ehcache.xml" />
     </bean>
     <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
         <property name="cacheManager" ref="cacheManagerFactory" />
     </bean>
     <!-- 启用缓存注解功能(请将其配置在Spring主配置文件中) -->
     <cache:annotation-driven cache-manager="cacheManager" />
 </beans>

效果:

 接六(一)、springMVC数据转换&格式化&校验&错误消息显示和国际化

spring文档地址:https://docs.spring.io/spring-framework/docs/5.3.27/reference/html/web.html#mvc-view-xml-mapping

 

SpringMVC的数据类型转换

类型转换器,就是将请求参数中的字符串 转换成其他类型,进行方法参数的赋值
 
定义一个类型转换器,需要实现 Converter 接口,会有一个泛型 ( 即对数据类型的约束 )
SpringMVC 拦截器
springMVC 拦截器的配置
/WEB-INF 路径的下文件,属于隐藏文件,只能通过项目内部进行跳转,不能通过路径直接访问;
编写案例
定义一个类型转换器,需要实现 Converter 接口,会有一个泛型 ( 即对数据类型的约束 )
拦截器与 Servlet 中的过滤器 Filter 类似
主要区别:
1 、实现原理不同 拦截器是基于 java 的反射机制的,而过滤器是基于函数回调;
2 、使用范围不同 拦截器不依赖与 servlet 容器,过滤器依赖与 servlet 容器。
3 、触发时机不同 过滤器先执行 ( servlet 之前 ) ,拦截器后执行 ( servlet 之后执行 )
4 、拦截的请求范围不同
5 、注入 Bean 情况不同 拦截器可以获取 IOC 容器中的各个 bean ,而过滤器就不行,拦截器里可
以注入一个 service ,可以调用业务逻辑。
6 、控制执行顺序不同 过滤器 1 个方法,拦截器 3 个方法 (preHandle 按照顺序执行 ,另外两个
方法顺序相反 )
 
springMVC 拦截器的配置
1 、实现 HandlerInterceptor 接口 或者 继承 HandlerInterceptor 的实体子类
2 、实现 WebRequestInterceptor 接口 或者 继承 WebRequestInterceptor 的实体子类
 
/WEB-INF 路径的下文件,属于隐藏文件,只能通过项目内部进行跳转,不能通过路径直接访问;
 
编写案例
实现功能,
用户登录后,可以访问 /selectAll /add /delete
未登录用户,只能访问 /login 访问其他路径时,自动跳转至登录页,并展示错误信息 " 用户未
登录 "

以上是关于六springMVC数据转换 jacson配置,json中的date由Date格式化输出的主要内容,如果未能解决你的问题,请参考以下文章

六SpringMVC——处理器方法的返回对象Object

SpringMVC自定义配置消息转换器踩坑总结

SpringMVC的数据类型转换

SpringMVC的数据类型转换

springmvc学习笔记(18)-json数据交互

SpringMVC类型转换数据绑定详解