【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】

这篇具有很好参考价值的文章主要介绍了【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2024.3.13 Wednesday

接上文【WEEK3】 【DAY2】JSON交互处理第一部分【中文版】

6.4.代码优化

6.4.1.乱码统一解决

  1. 上一种方法比较麻烦,如果项目中有许多请求则每一个都要添加,可以通过Spring配置统一指定,这样就不用每次都处理乱码了。可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置。
  2. 修改springmvc-servlet.xml
<?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/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 自动扫描指定的包,下面所有注解类交给IOC容器管理 -->
    <context:component-scan base-package="P14.controller"/>

    <!--JSON乱码问题配置-->
    <mvc:annotation-driven>
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <constructor-arg value="UTF-8"/>
            </bean>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
                <property name="objectMapper">
                    <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
                        <property name="failOnEmptyBeans" value="false"/>
                    </bean>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!-- 前缀 -->
        <property name="prefix" value="/WEB-INF/jsp/" />
        <!-- 后缀 -->
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

  1. 此时修改UserController.java至没有解决乱码问题(注释掉以下这行)的版本(便于检查该方法的有效性)
    //修正乱码问题
//    @RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
  1. 运行检查到乱码问题已解决
    http://localhost:8080/springmvc_05_json_war_exploded/j1
    【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】,SpringMVC学习,json,交互

6.4.2.返回JSON字符串统一解决

  1. 在类上直接使用 @RestController,使所有的方法都只返回 json 字符串,不用再在每个子方法处都添加@ResponseBody。在前后端分离开发中,一般都使用 @RestController,十分便捷
package P14.controller;

import P14.project.User;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

//@Controller//经过视图解析器
@RestController//不经过视图解析器,以下方法只会返回json字符串(作用域很广,故无需写第18行的@ResponseBody)
public class UserController {

    //修正乱码问题
//    @RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
    @RequestMapping("/j1")
//    @ResponseBody   //就不会经过视图解析器,会直接返回一个字符串
    public String json1() throws JsonProcessingException {
        //使用导入的jackson-databind包中的ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //创建一个对象
        User user = new User("张三",11,"female");

        //将一个值转化为字符串
        String str = mapper.writeValueAsString(user);

        //由于@ResponseBody注解,这里会将str转成json格式返回;十分方便
        return str;
    }
}

  1. 运行结果同上,不多赘述

6.5.测试集合输出

6.5.1.在UserController.java中添加一个新方法json2

@RequestMapping("/j2_set")
    public String json2() throws JsonProcessingException {
        //使用导入的jackson-databind包中的ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //创建集合
        List<User> userList = new ArrayList<>();
        User user1 = new User("张三",11,"female");
        User user2 = new User("李四",11,"male");
        User user3 = new User("王五",11,"female");
        //将user加入集合
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);

        //将一个集合转化为字符串
        String str = mapper.writeValueAsString(userList);

        //返回多个对象
        return str; //等效于返回new ObjectMapper().writeValueAsString(userList)
    }

6.5.2.运行

http://localhost:8080/springmvc_05_json_war_exploded/j2_set
【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】,SpringMVC学习,json,交互

6.6.输出时间对象

6.6.1.在UserController.java中添加一个新方法json3

@RequestMapping("/j3_time")
    public String json3() throws JsonProcessingException {
        //使用导入的jackson-databind包中的ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //注意导入的是java.util包
        Date date = new Date();
					//ObjectMapper得到将时间解析后的默认格式,为timestamp
        return  mapper.writeValueAsString(date);
    }

6.6.2.运行

http://localhost:8080/springmvc_05_json_war_exploded/j3_time
【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】,SpringMVC学习,json,交互
运行得到的一串数字是时间戳,是Jackson 默认的时间转换形式。时间戳指:从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。参考链接:https://tool.lu/timestamp/

6.6.3.更改输出时间的方式

在上述基础上添加一个方法,使输出的时间以自定的方式出现文章来源地址https://www.toymoban.com/news/detail-844494.html

6.6.3.1.Java解决法

  1. 新建json4
@RequestMapping("/j4_time")
    public String json4() throws JsonProcessingException {
        //使用导入的jackson-databind包中的ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //注意导入的是java.util包
        Date date = new Date();

        //使用自定义日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //ObjectMapper得到将时间解析后的默认格式,为timestamp
        return  mapper.writeValueAsString(sdf.format(date));
    }
  1. 运行
    http://localhost:8080/springmvc_05_json_war_exploded/j4_time
    【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】,SpringMVC学习,json,交互

6.6.3.2.ObjectMapper格式化输出

  1. 新建json5
@RequestMapping("/j5_time")
    public String json5() throws JsonProcessingException {
        //使用导入的jackson-databind包中的ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //使用ObjectMapper格式化输出
        //关闭使用时间戳
        mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS,false);
        //使用自定义日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //自定义了新的时间戳使用方式
        mapper.setDateFormat(sdf);

        //注意导入的是java.util包
        Date date = new Date();

        //ObjectMapper得到将时间解析后的默认格式,为timestamp
        return  mapper.writeValueAsString(date);
    }
  1. 运行
    http://localhost:8080/springmvc_05_json_war_exploded//j5_time
    【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】,SpringMVC学习,json,交互

到了这里,关于【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [wp]NewStarCTF 2023 WEEK3|WEB

    medium_sql Sqlmap一把梭 (部分能直接 flag\\\' 部分出现flag不完整 或者部分爆不到表 等官方wp) 在week1的基础上,多过滤了union。 验证存在布尔盲注: ?id=TMP0919\\\' And if(10,1,0)# ?id=TMP0919\\\' And if(01,1,0)# 发第一个,有回显,第二个,没回显,说明页面可以根据if判断的结果回显两种(真假)

    2024年02月08日
    浏览(34)
  • Blockchains & Distributed L week3 爱宝授课记录(1)

    现在我们的生活几乎离不开合同,往大说,工作是与公司签订的劳动合同,买房是与房产公司签订购房合同,买保险是与保险公司签订保险合同;往小了说,网购、定外卖、打车、买彩票都是与相关的服务提供公司签订了相应的合同。可以说, 有人的地方就用合约。 甚至我

    2024年01月18日
    浏览(33)
  • 【北邮国院大三下】Cybersecurity Law 网络安全法 Week3

    北邮国院大三电商在读,随课程进行整理知识点。仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用。个人认为相对不重要的细小的知识点不列在其中。如有错误请指出。转载请注明出处,祝您学习愉快。 编辑软件为Effie,如需要pdf/docx/effiesheet/markdown格式的文件

    2024年02月11日
    浏览(45)
  • 探索 ChatGPT 中文版:开启自然语言处理新纪元

    ChatGPT 中文版是一款由 OpenAI 推出的自然语言处理模型,它在中文语境下展现出了出色的文本生成和对话交互能力。作为程序员,我们对这一领域的创新和发展充满期待。 ChatGPT 中文版不仅能够回答各种技术问题,还能够生成代码示例,解决编程难题,以及提供有关最新技术趋

    2024年01月17日
    浏览(50)
  • 前端架构师-week3-Node项目如何支持ES Module

    目录 方案一: 通过 webpack 完成 ES Module 资源构建 通过 webpack target 属性支持 Node 内置库 webpack loader 配置 babel-loader 支持低版本 Node  方案二: 通过Node原生支持ES Module Node 支持 ES Module 的两种方法 总结     根目录下创建 webpack.config.js

    2024年02月06日
    浏览(35)
  • 图像处理软件Photoshop 2023 mac新增功能 ps 2023中文版

    ​Photoshop 2023 mac是一款功能强大、易用且灵活的图像编辑软件,旨在满足专业设计师和摄影师的需求。无论您是处理照片、制作图形还是进行艺术创作,Photoshop 2023 都能为您提供丰富的工具和效果,帮助您实现创意想法。Photoshop还支持多种文件格式,包括psD、JPEG、PNG和GIF,并

    2024年02月08日
    浏览(55)
  • raw图片处理软件:DxO PhotoLab 6 mac中文版支持相机格式

    DxO PhotoLab 6 mac是一款专业的RAW图片处理软件,适用于Mac操作系统。它具有先进的图像处理技术和直观易用的界面,可帮助用户轻松地将RAW格式的照片转换为高质量的JPEG或TIFF图像。 DxO PhotoLab 6支持多种相机品牌的RAW格式,包括佳能、尼康、索尼等,并且可以通过其特有的PRIM

    2024年02月08日
    浏览(35)
  • 2023年最新水果DAW编曲软件fl studio21 macOS - 21.0.3.3036简体中文版免费下载支持苹果M1/M2处理器

    一直梦想制作自己的音乐(无论是作为一名制作人还是艺术家),你可能会想你出生在这个时代是你的幸运星。这个水果圈工作室和上一版之间的改进水平确实令人钦佩。这仅仅是FL Studio 21所提供的皮毛。你的音乐项目的选择真的会让你大吃一惊。你以前从未有过这样的多才多

    2024年02月03日
    浏览(53)
  • 六、Json 数据的交互处理

           JSON 概况以及 JAVA 基本操作 JSON 数据的方式        因为现在的项目大多数都是前后端分离的项目,前端和后端都独立开发和部署。        由后端提供接口,前端从接口获取数据,将数据渲染到页面上。前后端数据传输的格式就是 JSON! JSON 和 JavaScript 的关系:

    2024年02月10日
    浏览(71)
  • SpringMVC06:Json交互处理

    目录 一、什么是JSON? 二、代码测试 1、新建一个module,SpringMVC-05-json,添加web支持和lib包 2、在index.jsp中编写测试内容 3、配置tomcat,启动项目,在浏览器中打开,查看控制台输出  4、controller返回JSON数据 5、代码优化 1、乱码统一解决 2、返回json字符串统一解决 六、测试集合

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包