Spring REST Hello World JSON Example
来源:互联网 发布:2017淘宝村发布会 编辑:程序博客网 时间:2024/05/19 17:49
1) Using @ResponseBody
Annotation
This technique is simple and easy. You have to include only jackson dependencies into classpath of your application and spring will register Jackson2JsonMessageConverter
class automatically into context. Whenever you ask for a resource from REST API and provide http header “accept: application/json
“, you will get back the json representation of resource.
Runtime JSON dependency
<!-- Jackson JSON Processor --><dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1</version></dependency>
@ResponseBody Support
Here @RestController = @Controller + @ResponseBody
@RestControllerpublic class EmployeeRESTController{ @RequestMapping(value = "/employees") public EmployeeListVO getAllEmployees() { EmployeeListVO employees = new EmployeeListVO(); EmployeeVO empOne = new EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com"); EmployeeVO empTwo = new EmployeeVO(2,"Amit","Singhal","asinghal@yahoo.com"); EmployeeVO empThree = new EmployeeVO(3,"Kirti","Mishra","kmishra@gmail.com"); employees.getEmployees().add(empOne); employees.getEmployees().add(empTwo); employees.getEmployees().add(empThree); return employees; } @RequestMapping(value = "/employees/{id}") public ResponseEntity<EmployeeVO> getEmployeeById (@PathVariable("id") int id) { if (id <= 3) { EmployeeVO employee = new EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com"); return new ResponseEntity<EmployeeVO>(employee, HttpStatus.OK); } return new ResponseEntity(HttpStatus.NOT_FOUND); }}
2) Using MappingJackson2JsonView
Support
The MappingJackson2JsonView
class also depends on the presence of the Jackson JSON processor library in classpath, so you don’t need to add anything extra. Complete pom.xml
looks like this:
pom.xml
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.howtodoinjava.demo</groupId> <artifactId>springrestexample</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>springrestexample Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- Spring MVC support --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.1.4.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.1.4.RELEASE</version> </dependency> <!-- Jackson JSON Processor --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.4.1</version> </dependency> </dependencies> <build> <finalName>springrestexample</finalName> </build></project>
2) Adding MappingJackson2JsonView
view
When you are using MappingJackson2JsonView
class, you will need to return a view name of type MappingJackson2JsonView
. So you will need to change two places.
a) Controller change
You will need to return viewName
from controller method. In our case, view name is “jsonTemplate
“.
“`
package com.howtodoinjava.demo.controller;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import com.howtodoinjava.demo.model.EmployeeListVO;
import com.howtodoinjava.demo.model.EmployeeVO;
@Controller
public class EmployeeRESTController
{
private EmployeeListVO getEmployeesCollection(){ EmployeeListVO employees = new EmployeeListVO(); EmployeeVO empOne = new EmployeeVO(1,"Lokesh","Gupta","howtodoinjava@gmail.com"); EmployeeVO empTwo = new EmployeeVO(2,"Amit","Singhal","asinghal@yahoo.com"); EmployeeVO empThree = new EmployeeVO(3,"Kirti","Mishra","kmishra@gmail.com"); employees.getEmployees().add(empOne); employees.getEmployees().add(empTwo); employees.getEmployees().add(empThree); return employees;}@RequestMapping(value = "/employees")public String getAllEmployeesJSON(Model model) { model.addAttribute("employees", getEmployeesCollection()); return "jsonTemplate";}
}
““
b) Configuration Change
You will need to configure viewName “jsonTemplate
” as bean of type MappingJackson2JsonView
. And you will need to configure view resolver of type BeanNameViewResolver
. This way viewName “jsonTemplate
” will be matched with MappingJackson2JsonView
and parsed JSON response will be returned to client.
RESTConfiguration.java
@Configurationpublic class RESTConfiguration { @Bean public View jsonTemplate() { MappingJackson2JsonView view = new MappingJackson2JsonView(); view.setPrettyPrint(true); return view; } @Bean public ViewResolver viewResolver() { return new BeanNameViewResolver(); }}
Equivalent XML configuration to above java configuration is as below.
spring-servlet.xml
<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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="com.howtodoinjava.demo" /> <mvc:annotation-driven /> <!-- JSON Support --> <bean name="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean name="jsonTemplate" class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/></beans>
3) Test Changes
Now when you hit the URL : http://localhost:8080/springrestexample/employees , you will get this result.
Project Structure
- Spring REST Hello World JSON Example
- Spring 3 REST hello world example
- Spring 3 REST hello world example
- Spring REST Hello World XML Example
- Spring 3 Hello World Example
- Spring MVC Hello World Example
- Spring MVC Hello World Example
- Spring Security hello world example
- Maven + Spring hello world example
- Spring 3 hello world example
- Spring Security hello world example
- Spring MVC hello world example
- Spring MVC hello world example
- Spring MVC hello world example
- Maven + Spring hello world example
- Spring 3 hello world example
- Spring Security hello world example
- Spring Security hello world example
- 手机web——自适应网页设计(html/css控制)
- HDU 2448 Mining Station on the Sea(最小费用最大流-mcmf)
- 【MySql】MySql基础使用详解
- linux个人操作习惯
- POJ 2421 Constructing Roads
- Spring REST Hello World JSON Example
- 嵌入式linux之IIC驱动
- 【MySql】MySQL的转义字符“\” \'使用说明
- windows路径操作API函数
- GitHub简介及基本操作
- 【MySql】 MySQL存储过程常用的函数(字符串类型操作,数学类,日期时间类)
- 计算机网络
- 结训赛
- JNI配置信息保存