SpringMVC扩展和SSM框架整合

发布于:2024-08-13 ⋅ 阅读:(99) ⋅ 点赞:(0)

在 SpringMVC 框架中处理 JSON 数据通常需要以下几个步骤:

1. 引入关依赖

首先,需要在项目的依赖管理中引入处理 JSON 数据所需的库,如 Jackson 库。

2. 配置消息转换器

在 SpringMVC 的配置文件中,配置 HttpMessageConverter 来处理 JSON 格式的请求和响应。

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="true">
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
    </mvc:message-converters>
</mvc:annotation-driven>

3. 控制器方法

在控制器的方法中,可以直接返回 Java 对象,SpringMVC 会自动将其转换为 JSON 格式响应给客户端。

@Controller
public class MyController {

    @RequestMapping(value = "/getUser", method = RequestMethod.GET)
    @ResponseBody
    public User getUser() {
        User user = new User();
        user.setId(1);
        user.setName("张三");
        return user;
    }
}

在上述示例中,@ResponseBody 注解表示将返回的对象转换为 JSON 格式。

4. 接收 JSON 请求参数

使用 @RequestBody 注解来接收客户端发送的 JSON 格式的请求参数。

@RequestMapping(value = "/saveUser", method = RequestMethod.POST)
@ResponseBody
public String saveUser(@RequestBody User user) {
    // 处理保存用户的逻辑
    return "保存成功";
}

例如,如果客户端发送的 JSON 数据为 {"id":2,"name":"李四"} ,SpringMVC 会将其自动转换为 User 对象。

在 SpringMVC 中处理 JSON 数据传递时的中文乱码和日期问题,可以通过以下方式解决:

中文乱码问题解决方法

  1. 在 web.xml 中配置编码过滤器:
<filter>
    <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
  1. 在控制器方法中设置响应的编码:
@RequestMapping(value = "/yourUrl", method = RequestMethod.GET)
public void yourMethod(HttpServletResponse response) {
    response.setContentType("application/json;charset=UTF-8");
    // 后续处理逻辑
}

日期问题解决方法

  1. 全局配置日期格式:
@Configuration
public class JacksonConfig {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        mapper.setDateFormat(dateFormat);
        return mapper;
    }
}
  1. 在实体类的日期字段上使用 @JsonFormat 注解指定格式:
public class YourEntity {

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date yourDateField;
}

例如,如果没有处理好日期问题,可能会出现类似 {"date": 1691321600000} 这样不直观的日期表示。而通过上述处理,就能得到 {"date": "2024-08-06 16:00:00"} 这种易于理解的格式。

 


网站公告

今日签到

点亮在社区的每一天
去签到