SpringMVC 返回json的两种方式

前后台数据交互使用json是一种很重要的方式。本文主要探讨SpringMVC框架使用json传输的技术。请注意。本文所提到的项目使用Spring 版本是4.1.7,其他版本在具体使用上可能有不一样的情况。

一、最常见——使用@RequestBody的注解返回一个实体对象;

使用方式如下:

1:引入jar包:

jackson-core、jackson-databind、jackson-annotion;

Spring4以上的版本这么配置,需要jackson的版本在2以上.

maven依赖 

<properties>
<jackson.version>2.7.3</jackson.version>
</properties>
<!--
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency>

2:Spring配置:

<mvc:annotation-driven/>

Spring4以上版本使用 <mvc:annotation-driven/>即包含了默认的配置,能够转化json,其他版本可能需要额外配置.

3:后台:

@RequestMapping("/entity") public @ResponseBody Entity returnJson(){ return new Entity("chentao","A handsome man"); }

关键就是@ResponseBody注解,否则Spring会去映射与路径匹配的jsp文件

4:前台

这个路径是可以直接调用的,结果会直接输出到,但是一般来说,会使用jquery Ajax来获取数据:

<%@ page contentType="text/html;charset=UTF-8" language="Java" %> <html> <head> <title>Welcome Page</title> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script> </head> <body> <h2>Hello World!</h2> <div> </div> </body> <script> $.get("/json/entity",function (data) { $("#div1").html(data); }) </script> </html>

结果

a:不添加@ResponseBody注解的情况,通过链接注解访问:

SpringMVC 返回json的两种方式

可以看到Spring MVC框架这个时候去找/json/entity.jsp这个文件的. 

b:添加@ResponseBody注解后:

SpringMVC 返回json的两种方式

json数据能正确返回了.

二、更加灵活的方式——将json数据放进Request中交互。

Spring MVC使用@ResponseBody的方式确实很简单,但是我们有时也会遇到这样的场景 ,就是访问一个新页面时,可能既要找到新的页面又要拿到新的数据去绘制页面。

这种时候如果使用@ResponseBody这种方式,那么就需要使用ajax技术,向后台请求两次,一次请求页面,一次请求数据。

如果希望通过一次请求就完成这个目标,那么就应该返回一个ModelAndView的对象,这样SpringMVC既可以跳转到一个页面,也能把数据传输到Request中。

使用方式:

1:相关jar包:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/5189a51c914f8f8d3acd3180ac5b1cfb.html