SpringMVC扩展和SSM框架整合总结

1. SpringMVC框架处理JSON数据

(1) JSON数据的传输处理 SpringMVC 提供了对 JSON 数据的良好支持,可以通过 @ResponseBody 注解将对象自动转换为 JSON 响应。在控制器方法中,使用 @ResponseBodyResponseEntity 返回对象即可自动转换为 JSON 格式
@RequestMapping("/getJson")
@ResponseBody
public User getJson() {
    User user = new User();
    user.setName("张三");
    user.setAge(25);
    return user;
}
(2) JSON数据传递过程中的中文乱码和日期问题 在 JSON 数据传输中,可能会遇到中文乱码和日期格式化问题。为了解决中文乱码问题,可以在 SpringMVC 配置文件中添加字符编码过滤器:
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

日期格式化问题可以通过配置 MappingJackson2HttpMessageConverter 来解决:

@Bean
public MappingJackson2HttpMessageConverter jacksonMessageConverter() {
    MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
    ObjectMapper mapper = new ObjectMapper();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    mapper.setDateFormat(sdf);
    messageConverter.setObjectMapper(mapper);
    return messageConverter;
}

也可以通过配置自定义的ConversionService来解决:

<!--    配置自定义的ConversionService-->
    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters" >
            <list>
                <bean class="cn.cvs.converter.String2DateConverter">
                    <constructor-arg type="java.lang.String" value="yyyy-MM-dd"/>
                </bean>
            </list>
        </property>
    </bean>

(3) 多视图解析器 在 SpringMVC 中,可以配置多个视图解析器来处理不同类型的视图  
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/" />
    <property name="suffix" value=".jsp" />
</bean>

<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">
    <property name="contentType" value="application/json" />
</bean>

2. SpringMVC框架中的数据格式转换

(1) SpringMVC框架数据转换流程 SpringMVC 提供了 ConversionService 接口来处理数据类型转换。在请求参数绑定时,SpringMVC 会使用 ConversionService 将请求参数转换为目标类型
(2) 编写自定义转换器 可以通过实现 Converter 接口来编写自定义转换器,例如将字符串转换为日期:
public class StringToDateConverter implements Converter<String, Date> {
    private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    @Override
    public Date convert(String source) {
        try {
            return dateFormat.parse(source);
        } catch (ParseException e) {
            throw new IllegalArgumentException("Invalid date format. Please use yyyy-MM-dd");
        }
    }
}

然后在 Spring 配置文件中注册这个转换器:

<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
    <property name="converters">
        <set>
            <bean class="com.example.converter.StringToDateConverter" />
        </set>
    </property>
</bean>
(3) 使用@InitBinder装配自定义编辑器 通过 @InitBinder 注解可以装配自定义的属性编辑器,例如:
@InitBinder
public void initBinder(WebDataBinder binder) {
    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), false));
}

在控制器方法中,SpringMVC 会自动使用 WebDataBinder 进行参数绑定和类型转换:

@RequestMapping("/submitDate")
public String submitDate(@RequestParam("date") Date date) {
    // 使用转换后的 Date 对象进行业务处理
    return "success";
}

使用以上扩展和整合,可以更好地处理 JSON 数据传输、数据格式转换等问题,提升 SpringMVC 框架的扩展性、灵活性及实用性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值