Spring MVC – Phần 14: Trả về dữ liệu định dạng JSON trong Spring MVC

Spring MVC – Phần 14: Trả về dữ liệu định dạng JSON trong Spring MVC

Ở bài này chúng ta sẽ thực hiện một ví dụ trả về dữ liệu định dạng JSON thay vì trả về view ở controller

Ví dụ:

Spring MVC – Phần 14: Trả về dữ liệu định dạng JSON trong Spring MVC

Việc trả về dữ liệu JSON trong controller như này thường được áp dụng để cung cấp các API (RestFul – Webservice: mình sẽ giới thiệu trong bài sau chi tiết hơn)

Spring MVC Generate JSON

Spring MVC Generate JSON

Thư viện sử dụng:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>stackjava.com</groupId>
  <artifactId>SpringMVC-JSON</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.3</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>2.9.3</version>
    </dependency>
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.3</version>
    </dependency>


  </dependencies>
</project>

sau khi khai báo các thư viện Jackson Core, Jackson Databind, Jackson Annotations, những controller được đánh dấu @ResponseBody sẽ tự động định dạng đối tượng và trả về dữ liệu dạng JSON

File Spring Config:

<?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:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  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">

  <context:component-scan base-package="stackjava.com.springmvc" />
  <mvc:annotation-driven />
  <bean
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
      <value>/WEB-INF/views/jsp/</value>
    </property>
    <property name="suffix">
      <value>.jsp</value>
    </property>
  </bean>

</beans>

Các class Model:

package stackjava.com.springmvc.model;

public class User {
  private int id;
  private String name;
  private String email;

  // getter - setter
}

Class Controller:

package stackjava.com.springmvc.controller;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import stackjava.com.springmvc.model.User;

@Controller
public class HelloController {

  @RequestMapping("/")
  public String index() {
    return "index";
  }

  @RequestMapping("/json")
  @ResponseBody
  public User testJSON() {
    User user = new User(1, "kai", "abc@gmail.com");
    return user;
  }

  @RequestMapping("/list-json")
  @ResponseBody
  public List<User> testListJSON() {
    List<User> listUser = new ArrayList<User>();
    listUser.add(new User(1, "kai", "abc@gmail.com"));
    listUser.add(new User(2, "stack", "def@yahoo.com"));
    return listUser;
  }

}

File view:

<html>
<head>
<title>index</title>
</head>
<body>
  <h1>Spring MVC Generate JSON!</h1>
  <a href="json">/json</a> <br/>
  <a href="list-json">/list-json</a> <br/>
</body>
</html>

Demo:

spring mvc trả về dữ liệu định dạng json spring mvc trả về dữ liệu định dạng json spring mvc generate json

Okay, Done!

Download code ví dụ trên tại đây

 

Spring MVC – Phần 14: Trả về dữ liệu định dạng JSON trong Spring MVC

stackjava.com