SpringMvc之Json&全局异常处理

本文详细介绍了SpringMvc对Json数据的支持,包括Json格式分类、配置Json转换适配器、使用responseBody和restController注解返回Json数据。此外,还深入探讨了全局异常处理的重要性,通过SimpleMappingExceptionResolver、HandlerExceptionResovler接口和@ControllerAdvice+@ExceptionHandler实现全局异常处理,并讲解了返回Json格式的异常信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、 SpringMvc框架对Json数据的支持

1.    Json数据的格式分类:

2.  SpringMvc框架如何产生上述三种json格式数据

2.1导入pom依赖

2.2  在Springmvc框架配置文件中配置做json数据转换的适配器

2.3  添加responseBody、restController注解  能够将json数据返回

2.4  前端界面编码

2.5 返回json数据结果

二、全局异常的处理

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

2.   异常处理思路

3.   SpringMVC异常分类

4.   非全局异常问题处理

5、使用Spring MVC提供的简单异常处理器SimpleMappingExceptionResolver;

 5.1在Springmvc框架配置文件中配置处理器

5.2  建立一个前端异常显示界面 error

5.3  处理结果

6、通过HandlerExceptionResovler接口实现全局异常 

6.1  建立一个全局异常处理类并实现运行异常类

6.2  建立异常处理器 实现HandlerExceptionResovler接口

6.3  在控制层添加异常代码

 7.   使用@ControllerAdvice+@ExceptionHandler实现全局异常

8、全局异常处理JSON返回 


一、 SpringMvc框架对Json数据的支持

1.    Json数据的格式分类:

返回Json对象:T  Map

返回Json数组:list<T> list<Map>

返回Json对象数组:{

                msg:“”

                code:200,

                data:[ ]

}

2.  SpringMvc框架如何产生上述三种json格式数据

2.1导入pom依赖

 <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.2  在Springmvc框架配置文件中配置做json数据转换的适配器

<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>

2.3  添加responseBody、restController注解  能够将json数据返回

在项目中如果全部返回json格式数据就用restController:responseBody+controller = restController

在项目中如果返回json格式数据与跳转页面同时存在,就在返回json格式的方法上添加responseBody注解,在类上添加controller

2.3.1 返回json对象

  //返回map
    @RequestMapping("/Map")
    public Map map(HttpServletRequest Request , Clazz clazz){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(Request);
        //返回[{},{}]
        return this.clazzBiz.listMapPager(clazz,pageBean).get(0);
    }

    //返回T
    @RequestMapping("/Clazz")
    public Clazz clazz(HttpServletRequest Request , Clazz clazz){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(Request);
        //返回[{},{}]
        return this.clazzBiz.listPager(clazz,pageBean).get(0);
    }

 2.3.2 返回json数组对象

  //返回list<T>
    @RequestMapping("/list")
    public List<Clazz> list(HttpServletRequest Request , Clazz clazz){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(Request);
        //返回[{},{}]
        return this.clazzBiz.listPager(clazz,pageBean);
    }



    //返回list<map>
    @RequestMapping("/listMap")
    public List<Map> listMap(HttpServletRequest Request , Clazz clazz){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(Request);
        //返回[{},{}]
        return this.clazzBiz.listMapPager(clazz,pageBean);
    }

2.3.3 返回json对象数组

//返回对象数组
    @RequestMapping("/hunhe")
    public Map hunhe(HttpServletRequest Request , Clazz clazz){
        PageBean pageBean = new PageBean();
        pageBean.setRequest(Request);
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值