`
wbj0110
  • 浏览: 1598966 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Spring MVC JSON (JSON to Java)(pull)

阅读更多

sing Spring MVC we can send to the client data in JSON format, but what if the client sends POST request with data in JSON format? Here we will see how Spring MVC “auto” maps JSON data sent by client POST request into Java object.

 

Objectives:

  • How client request “GET” data in json format?
  • How client send “POST” data in json format using jQuery.ajax()?
  • How Spring MVC Controller can map json into java object?

Environment:

  • Eclipse
  • Maven (optional)
  • Browser (Firefox, Chrome or IE)
  • Java Server  (Jetty, Apache,…)

Libraries:

  • Spring Framework
  • Jackson
  • jQuery
 <dependencies>
        <dependency><!-- spring mvc -->
            <groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.0.5.RELEASE</version>
        </dependency>
        <dependency><!-- jackson -->
            <groupId>org.codehaus.jackson</groupId><artifactId>jackson-mapper-asl</artifactId><version>1.4.2</version>
        </dependency>
    </dependencies>

( 1 ) Java Project

( 2 ) Java Code & XML Configuration

  • RestController.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.hmkcode.controllers;
 
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
 
import com.hmkcode.vo.Person;
 
@Controller
@RequestMapping("/cont")
public class RestController {
 
  public RestController(){
      System.out.println("init RestController");
  }
 
  //this method responses to GET request http://localhost/spring-mvc-json/rest/cont
  // return Person object as json
 
  @RequestMapping(method = RequestMethod.GET)
  public @ResponseBody Person get(HttpServletResponse res) {
 
      Person person = new Person();
      person.setId(1);
      person.setName("hmk");
 
      return person;
  }
 
  //this method response to POST request http://localhost/spring-mvc-json/rest/cont/person
  // receives json data sent by client --> map it to Person object
  // return Person object as json
  @RequestMapping(value="person", method = RequestMethod.POST)
  public @ResponseBody Person post( @RequestBody final  Person person) {    
 
      System.out.println(person.getId() + " " + person.getName());
      return person;
  }
}
  • Person.java
1
2
3
4
5
6
7
8
9
10
11
12
13
package com.hmkcode.vo;
 
import java.io.Serializable;
 
public class Person implements Serializable {
 
  private static final long serialVersionUID = 1L;
  private int id;
  private String name;
 
//getters and setters...
 
}
  • rest-servlet.xml
1
2
3
4
5
6
<beans ...>
 
  <context:component-scan base-package="com.hmkcode.controllers" />
  <mvc:annotation-driven />
 
</beans>
  • web.xml
1
2
3
4
5
6
7
8
9
10
.......
 <servlet>
    <servlet-name>rest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>rest</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
  • index.html –> $.ajax()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
......
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script type="text/javascript" >
$(document).ready(function(){
  sendAjax();
});
 
function sendAjax() {
 
$.ajax({
    url: "/spring-mvc-json/rest/cont/person",
    type: 'POST',
    dataType: 'json',
    data: "{\"name\":\"hmkcode\",\"id\":2}",
    contentType: 'application/json',
    mimeType: 'application/json',
    success: function(data) {
        alert(data.id + " " + data.name);
    },
    error:function(data,status,er) {
        alert("error: "+data+" status: "+status+" er:"+er);
    }
});
}
</script>
......
</html>

( 3 ) Run & Test

  • Run Jetty “or your” server
  • http://localhost:8080/spring-mvc-json/rest/cont
  • Thsi url will call the first method RestController.get() return Person object in json format

  • http://localhost:8080/spring-mvc-json/index.html
  • This html page contains jQuery.ajax() function that will call the second method RestController.post() on the load of the paeg.
  • $.ajax() will send json data data: “{\”name\”:\”hmkcode\”,\”id\”:2}”
  • Controller will receive this json data mapp into java object using @RequestBody
  • Controller will return data again to the client in json format too.

Soruce Code: @ github

分享到:
评论

相关推荐

    NewStarBlog 开源Java博客系统.zip

    Java Web开发主要涉及Servlet、JSP(JavaServer Pages)和JavaEE(Java Enterprise Edition)框架,如Spring Boot和Spring MVC,这些技术在构建Web应用程序时扮演了关键角色。 2. **Spring Boot**:Spring Boot简化...

    Java开发典型模块大全(仅含程序源码)-20个Java项目

    19. **XML与JSON解析**:如DOM、SAX、PULL解析XML,以及Gson、Jackson解析JSON。 20. **文件处理与压缩**:如文件读写、目录操作,以及使用Zookeeper或ZipFile进行文件压缩和解压。 通过这20个Java项目,开发者...

    java博客项目实战.zip

    2. **Spring Boot框架**:作为项目的核心,Spring Boot简化了Java Web应用的开发,它集成了Spring MVC、Spring Data JPA等组件,使得配置更为简洁。开发者需要了解Spring Boot的起步依赖、自动配置、内嵌Servlet容器...

    RuoYi-Vue项目学习

    在Java领域,RuoYi-Vue可能是基于Spring Boot或Spring MVC开发的后台管理系统,提供了完整的权限控制、数据展示和业务处理等功能。 在这个项目中,你将学习到以下关键知识点: 1. **Vue.js基础**:Vue.js的核心...

    java毕业设计之基于微信小程序的校招资讯平台的设计与实现源码.zip

    2. **Spring Boot框架**:Spring Boot简化了Java Web应用的开发,它集成了许多常用组件,如Spring MVC、Spring Data JPA等。开发者需要了解如何创建Spring Boot项目、配置启动类、编写RESTful API接口等。 3. **...

    java毕业设计之计算机软考系统的设计与实现-微信小程序源码.zip

    4. **Spring Boot框架**:作为后端服务的基础,Spring Boot简化了Java应用的开发,集成了大量的常用库,如Spring MVC、MyBatis等,用于处理HTTP请求、数据持久化等。 5. **MyBatis框架**:MyBatis作为持久层框架,...

    【Java后端开发】教程及案例.docx

    - **Spring MVC**:熟悉Spring MVC框架的架构和组件,能够基于此框架开发Web应用程序。 - **Spring Boot**:学习Spring Boot框架的特点,了解其如何简化项目的配置过程,实现快速启动和部署。 2. **Hibernate/JPA...

    java 学习资料

    通过Spring Boot,开发者可以快速启动一个带有默认配置的应用,而Spring MVC则用于构建Web应用。学习Spring,你需要理解Spring Bean的生命周期,如何使用Spring Data访问数据库,以及Spring Security为应用提供安全...

    毕业设计:基于springboot实现医院排队叫号系统.zip

    SpringBoot是Java生态中一个流行的微服务开发框架,它简化了创建独立、生产级别的基于Spring的应用程序流程,具有自动配置和起步依赖等特性,使得开发更加高效。 在这个项目中,我们可以预想到以下几个核心知识点:...

    java毕业设计&课设-一元夺宝商城小程序.zip

    项目可能采用了Spring Boot作为后端框架,它集成了Spring MVC、Spring Data JPA等,使得开发RESTful API更为便捷。 3. **MyBatis持久层框架**:MyBatis用于处理数据库操作,它允许开发者编写动态SQL,提高了数据库...

    SpringBoot项目博客系统-包含前台后台前端后端-适合作为Java学习的第一练手项目.zip

    2. **MVC架构**:Spring Boot支持Model-View-Controller设计模式,理解如何定义控制器(Controller),创建模型(Model)以及视图(View)。学习使用@RestController和@RequestMapping注解来处理HTTP请求。 3. **...

    Java项目开发与毕业设计指导

    2. **MVC设计模式**:在许多Java项目中,Model-View-Controller(MVC)设计模式是常用的架构。它将应用程序分为三部分,模型负责数据管理,视图负责显示,控制器处理用户输入。理解并熟练运用MVC有助于构建可维护和...

    java毕业设计之基于微信小程序的校园互助平台源码.zip

    4. **后端接口开发**:为了实现前后端交互,Java开发者需要掌握RESTful API的设计和实现,使用HTTP协议进行通信,通常会使用Spring Boot或Spring MVC框架来构建服务。同时,需要理解JSON格式的数据交换,以及如何...

    Java从零到企业级电商项目实战-服务端.zip

    8. **Spring框架**: 这是企业级Java开发的核心,将学习Spring的核心特性,如依赖注入(DI)、AOP(面向切面编程)、Spring MVC、事务管理等。 9. **MyBatis框架**: 学习如何使用MyBatis进行持久层操作,包括SQL映射...

    大学生信息管理系统——初学路上自己摸索实践的项目.zip

    2. Java后端开发:作为主要的编程语言,Java提供了Spring Boot框架来构建系统后端。开发者需要掌握Spring MVC模式,实现控制器、服务层、模型和DAO接口,以便处理HTTP请求、数据持久化和业务逻辑。 3. RESTful API...

    场地预约(javaweb实训项目)的所有后端代码

    5. **Spring框架**: Spring是JavaWeb开发中的核心框架,提供依赖注入(DI)、AOP(面向切面编程)、数据访问/集成、MVC等功能。开发者需了解Spring的核心概念,如Bean管理、AOP的实现以及Spring JDBC和MyBatis等数据...

    微信小程序天气 后端

    1. **Java后端框架**:Java后端开发常常采用Spring Boot框架,它简化了新Spring应用的初始搭建以及开发过程。Spring Boot内置了Tomcat服务器,使得部署更加便捷。同时,Spring MVC作为Spring Boot的Web组件,负责...

    Javaweb springboot框架学子商城源码个人练习,包含数据库后端+前端

    - "spring boot java":强调了Spring Boot是基于Java语言的,Java作为企业级应用的首选语言,具有稳定性和跨平台性。 - "软件/插件":暗示该项目可能包含了可复用的软件组件或者插件,便于功能扩展和维护。 - ...

    Java Web项目开发案例精粹03-在线考试系统

    2. **MVC设计模式**:在线考试系统很可能采用了Model-View-Controller(MVC)架构,这种设计模式能有效地分离业务逻辑、数据模型和用户界面,提高代码可维护性和可扩展性。 3. **数据库设计**:标签中的“MySQL”...

    游乐场:Java Full Stack程序

    2. **Web框架**:Spring框架是Java全栈开发中的核心,Spring Boot简化了Spring的应用配置,而Spring MVC则用于构建MVC架构的Web应用。理解并熟练使用Spring Boot和Spring MVC,可以快速构建后端服务。 3. **数据库...

Global site tag (gtag.js) - Google Analytics