SpringMVC之JSON数据返回与异常处理机制1

简介: SpringMVC之JSON数据返回与异常处理机制1

目录

一.SpringMVC的JSON数据返回

1.导入Maven依赖

2.配置spring-mvc.xml

3.@ResponseBody注解的使用

3.1案例演示

1.List集合转JSON

2.Map集合转JSON

3.返回指定格式String

4. @ResponseBody用法

5.Jackson

5.1介绍

5.2常用注解

二.异常处理机制

1.为什么要全局异常处理

2.异常处理思路

3.SpringMVC异常分类

4.案例演示

4.1 异常处理方式一:配置springmvc提供的简单异常处理器

4.2 异常处理方式二:全局异常处理,通过实现HandlerExceptionResolver异常处理解析器完成异常处理(1)首先在异常包中定义一个全局异常类

(2) 定义一个全局异常处理的类

4.3 异常处理方式三:通过注解的方式将异常信息直接以JSON的格式回显到前端


一.SpringMVC的JSON数据返回

1.导入Maven依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.3</version>
</dependency> 

2.配置spring-mvc.xml

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <property name="messageConverters">
        <list>
          <ref bean="mappingJackson2HttpMessageConverter"/>
        </list>
    </property>
</bean>
<bean id="mappingJackson2HttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
    <!--处理中文乱码以及避免IE执行AJAX时,返回JSON出现下载文件-->
    <property name="supportedMediaTypes">
        <list>
            <value>text/html;charset=UTF-8</value>
            <value>text/json;charset=UTF-8</value>
            <value>application/json;charset=UTF-8</value>
        </list>
    </property>
</bean>

3.@ResponseBody注解的使用

@ResponseBody注解的作用:

用于标记控制器方法的返回值应该作为 HTTP 响应的主体部分返回,而不是通过视图解析器进行渲染。

当使用 Spring MVC 框架时,控制器方法通常会返回某种类型的数据(例如对象、集合、字符串等),然后由视图解析器将该数据绑定到视图模板并生成最终的 HTML 或其他格式的响应。然而,有时候我们希望直接返回数据而不经过视图解析器的处理,将Controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

在这种情况下,我们可以使用 @ResponseBody 注解来标记控制器方法。当该注解应用于方法时,Spring MVC 框架会将方法的返回值封装为适当的格式(例如 JSON),并将其作为 HTTP 响应的主体部分返回给客户端。这样可以方便地实现 RESTful API 服务,将数据直接以特定格式响应给调用端。

注意:在使用此注解之后不会再走视图解析器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

3.1案例演示

1.List集合转JSON

这里我们定义一个返回List集合的方法,最终到Controller层中标注@ResponseBody注解将集合数据转换成JSON数据

/**
     * 返回List<T>
     * @param req
     * @param hBook
     * @return
     */
    @ResponseBody
    @RequestMapping("/list")
    public List<HBook> list(HttpServletRequest req, HBook hBook){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(req);
        List<HBook> lst = this.hBookbiz.listPager(hBook, pageBean);
        return lst;
    }

测试结果:

2.Map集合转JSON

我们定义一个返回Map集合的方法,通过Controller中注解@ResponseBody,返回JSON格式数据

/**
     * 返回List<Map>
     * @param req
     * @param hBook
     * @return
     */
    @ResponseBody
    @RequestMapping("/mapList")
    public List<Map> mapList(HttpServletRequest req, HBook hBook){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(req);
        List<Map> lst = this.hBookbiz.mapListPager(hBook, pageBean);
        return lst;
    }

测试结果

3.返回指定格式String

@ResponseBody
    @RequestMapping("/jsonStr")
    public String jsonStr(HttpServletRequest req, HBook hBook){
        return "bookEdit";
    }

测试结果

4. @ResponseBody用法

在整个Controller类中可将注解定义在类对象上面,这样整个类中的方法都使用了注解@ResponseBody

小结:由上面的案例得知,我们将对象、集合、字符串等类型数据,通过Controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

5.Jackson

5.1介绍

Jackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。Jackson所依赖的jar包较少,简单易用并且性能也要相对高些,并且Jackson社区相对比较活跃,更新速度也比较快。

特点

容易使用,提供了高层次外观,简化常用的用例。

无需创建映射,API提供了默认的映射大部分对象序列化。

性能高,快速,低内存占用

创建干净的json

不依赖其他库

代码开源

5.2常用注解

屏幕截图 2023-09-15 014314.png

目录
相关文章
|
21天前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
20天前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
10天前
|
JSON 自然语言处理 监控
淘宝关键词搜索与商品详情API接口(JSON数据返回)
通过商品ID(num_iid)获取商品全量信息,包括SKU规格、库存、促销活动、卖家信息、详情页HTML等。
|
22天前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
28天前
|
机器学习/深度学习 JSON API
干货,淘宝拍立淘按图搜索,淘宝API(json数据返回)
淘宝拍立淘按图搜索API接口基于深度学习与计算机视觉技术,通过解析用户上传的商品图片,在淘宝商品库中实现毫秒级相似商品匹配,并以JSON格式返回商品标题、图片链接、价格、销量、相似度评分等详细信息。
|
2月前
|
JSON API 数据格式
淘宝/天猫图片搜索API接口,json返回数据。
淘宝/天猫平台虽未开放直接的图片搜索API,但可通过阿里妈妈淘宝联盟或天猫开放平台接口实现类似功能。本文提供基于淘宝联盟的图片关联商品搜索Curl示例及JSON响应说明,适用于已获权限的开发者。如需更高精度搜索,可选用阿里云视觉智能API。
|
2月前
|
JSON API 数据安全/隐私保护
深度分析淘宝卖家订单详情API接口,用json返回数据
淘宝卖家订单详情API(taobao.trade.fullinfo.get)是淘宝开放平台提供的重要接口,用于获取单个订单的完整信息,包括订单状态、买家信息、商品明细、支付与物流信息等,支撑订单管理、ERP对接及售后处理。需通过appkey、appsecret和session认证,并遵守调用频率与数据权限限制。本文详解其使用方法并附Python调用示例。
|
1月前
|
机器学习/深度学习 JSON 监控
淘宝拍立淘按图搜索与商品详情API的JSON数据返回详解
通过调用taobao.item.get接口,获取商品标题、价格、销量、SKU、图片、属性、促销信息等全量数据。
|
1月前
|
JSON API 数据格式
干货满满!淘宝商品详情数据,淘宝API(json数据返回)
淘宝商品详情 API 接口(如 taobao.item.get)的 JSON 数据返回示例如下
|
2月前
|
JSON 算法 安全
淘宝商品详情API接口系列,json数据返回
淘宝开放平台提供了多种API接口用于获取商品详情信息,主要通过 淘宝开放平台(Taobao Open Platform, TOP) 的 taobao.tbk.item.info.get(淘宝客商品详情)或 taobao.item.get(标准商品API)等接口实现。以下是关键信息及JSON返回示例:

热门文章

最新文章