SpringMVC的JSON处理及FastJSON的整合使用(七)上

简介: SpringMVC的JSON处理及FastJSON的整合使用(七)

一. JSON


关于JSON,可以看老蝴蝶以前的文章: JSON简介及前端简单解析(一)


二. SpringMVC对JSON的处理


SpringMVC 对JSON的处理,主要是通过 @RequestBody 和@ResponseBody 两个注解进行的。


SpringMVC中默认的JSON转换使用的是 jackson, 所用的类是 MappingJackson2HttpMessageConverter . 故需要先下载jackson.jar 包。


有两种形式。 借鉴网上的图片,老蝴蝶重新画了一下。为了加深印象。


20190819174134588.png

最常用的是第二种, key/value 的形式。


二.一 下载后导入 jackson有关的jar包。


20190826172805388.png


把这几个jackson 的jar包都引入进来,否则会类找不到的错误。

如:


20190826172816358.png


20190826172825235.png


二.二 springMVC配置文件 springmvc.xml 写原先的映射器和适配器


<!-- 先用以前的复杂形式 -->
  <!-- 处理器映射器 -->
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
  处理器适配器
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
      <list>
        <!--可添加其他的转换器-->
        <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>
      </list>
    </property>
  </bean>


二.三 后端处理JSON (原始的方式) ,返回值为 void


@RequestMapping(value="toLogin")
  public String toLogin(){
    return "user/login";
  }
  @RequestMapping(value="/voidJson")
  public void getJsonUser(@RequestBody User user,HttpServletResponse response){
    System.out.println("前台传过来的值是:"+user.toString());
    //以void的形式返回
    response.setCharacterEncoding("utf-8");
    response.setContentType("text/html;charset=utf-8");
    ObjectMapper object=new ObjectMapper();
    user.setName("我是老蝴蝶"); //改变前台传过来的值
    user.setId(1); //添加新的属性值
    try {
      System.out.println("输出值为:"+object.writeValueAsString(user));
      response.getWriter().println(object.writeValueAsString(user));
    } catch (JsonGenerationException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } catch (JsonMappingException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    } catch (IOException e) {
      // TODO 自动生成的 catch 块
      e.printStackTrace();
    }
  }


二.四 前台传入json ,注意路径和返回数据类型


<body>
  <h2>两个蝴蝶飞欢迎你</h2>
  <span id="name"></span> <br>
  <span id="sex"></span> <br>
  <span id="description"></span> <br>
  <span id="id"></span> <br>
  <button onclick="execVoidJSON()">执行voidjson</button>
  <script type="text/javascript">
    function execVoidJSON(){
      //1。 定义对象
      var user={"name":"两个蝴蝶飞","sex":24,"description":"一个快乐的程序员"};
      //2。 执行ajax程序 
      $.ajax({
        type:"post",
        contentType:"application/json;charset=utf-8",  
        url:"voidJson.action",  //注意请求路径
        data:JSON.stringify(user),
        success:function(data){
          //接收过来的是字符串  
          var jsonData=JSON.parse(data);
          $("#name").html(jsonData.name);
          $("#sex").html(jsonData.sex);
          $("#description").html(jsonData.description);
          $("#id").html(jsonData.id);
        }
      })
    }
  </script>
</body>


二.五 运行服务器,测试结果


20190826172842395.png


点击 按钮, 控制台打印输出


20190826172849362.png


前台页面展示,


20190826172904454.png


响应数据类型


20190826172910521.png


还需要将 json字符串转换成json数据,太麻烦。


下面,开始进行相应的优化。


二.六 springmvc.xml 配置文件优化


直接将 二.二 步骤中的内容转换成


<!-- 适配器和映射器简写 -->
  <mvc:annotation-driven></mvc:annotation-driven>


即可。 会自动注入 json 转换器。 一般开发中常用这种形式。


二.七 利用@ResponseBody 注解进行将java 对象转换成 json串,返回值为java 对象。


  @RequestMapping(value="toLogin")
  public String toLogin(){
    return "user/login";
  }
  @RequestMapping(value="/responseJson")
  public @ResponseBody User getResponseUser(@RequestBody User user){
    System.out.println("前台传过来的值是:"+user.toString());
    user.setName("我是老蝴蝶"); //改变前台传过来的值
    user.setId(1); //添加新的属性值
    return user;  //很简单的写法。
  }


二.八 前台传入json


<body>
  <h2>两个蝴蝶飞欢迎你</h2>
  <span id="name"></span> <br>
  <span id="sex"></span> <br>
  <span id="description"></span> <br>
  <span id="id"></span> <br>
  <button onclick="execResponseJSON()">执行Responsejson</button>
  <script type="text/javascript">
    function execResponseJSON(){
      //1。 定义对象
      var user={"name":"两个蝴蝶飞","sex":24,"description":"一个快乐的程序员"};
      //2。 执行ajax程序 
      $.ajax({
        type:"post",
        contentType:"application/json;charset=utf-8",  
        url:"responseJson.action",  //注意请求路径
        data:JSON.stringify(user),
        success:function(data){
          //可直接使用data
          $("#name").html(data.name);
          $("#sex").html(data.sex);
          $("#description").html(data.description);
          $("#id").html(data.id);
        }
      })
    }
  </script>
</body>


二.九 运行服务器,进行查看


20190826172921627.png


控制台打印输出:


20190826172928708.png


前台数据展示:


20190826173011450.png


响应数据类型


20190826172948954.png


上面就是 请求 json字符串的形式。 当然,响应的时候,也可以响应集合。 这个在下面讲解。

相关文章
|
6月前
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
340 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
6月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
512 0
|
6月前
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping(&quot;/user/{id}&quot;)` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable(&quot;自定义名&quot;)` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
336 0
|
6月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestMapping
@RequestMapping 是 Spring MVC 中用于请求地址映射的注解,可作用于类或方法上。类级别定义控制器父路径,方法级别进一步指定处理逻辑。常用属性包括 value(请求地址)、method(请求类型,如 GET/POST 等,默认 GET)和 produces(返回内容类型)。例如:`@RequestMapping(value = &quot;/test&quot;, produces = &quot;application/json; charset=UTF-8&quot;)`。此外,针对不同请求方式还有简化注解,如 @GetMapping、@PostMapping 等。
285 0
|
6月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RestController
本文主要介绍 Spring Boot 中 MVC 开发常用的几个注解及其使用方式,包括 `@RestController`、`@RequestMapping`、`@PathVariable`、`@RequestParam` 和 `@RequestBody`。其中重点讲解了 `@RestController` 注解的构成与特点:它是 `@Controller` 和 `@ResponseBody` 的结合体,适用于返回 JSON 数据的场景。文章还指出,在需要模板渲染(如 Thymeleaf)而非前后端分离的情况下,应使用 `@Controller` 而非 `@RestController`
223 0
|
6月前
|
JSON Java fastjson
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——使用 fastJson 处理 null
本文介绍如何使用 fastJson 处理 null 值。与 Jackson 不同,fastJson 需要通过继承 `WebMvcConfigurationSupport` 类并覆盖 `configureMessageConverters` 方法来配置 null 值的处理方式。例如,可将 String 类型的 null 转为 &quot;&quot;,Number 类型的 null 转为 0,避免循环引用等。代码示例展示了具体实现步骤,包括引入相关依赖、设置序列化特性及解决中文乱码问题。
326 0
|
2月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
194 0
|
2月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
115 0
|
2月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
174 0
|
8月前
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
380 29