04.JSON和全局异常处理

JSON解析与全局异常处理
本文介绍了JSON的解析过程,包括引入相关依赖、SpringMVC配置及测试。同时,探讨了全局异常处理的三种实现方式。

目录

1.json解析

2.全局异常处理的3种形式


1.json解析

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

配置spingmvcxml

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        &lt;!&ndash; 定义默认的异常处理页面 &ndash;&gt;
        <property name="defaultErrorView" value="error"/>
        &lt;!&ndash; 定义异常处理页面用来获取异常信息的变量名,也可不定义,默认名为exception &ndash;&gt;
        <property name="exceptionAttribute" value="ex"/>
        &lt;!&ndash; 定义需要特殊处理的异常,这是重要点 &ndash;&gt;
        <property name="exceptionMappings">
            <props>
                <prop key="java.lang.RuntimeException">error</prop>
            </props>
            &lt;!&ndash; 还可以定义其他的自定义异常 &ndash;&gt;
        </property>
    </bean>

测试

package com.hz.ssm.web;

import com.hz.ssm.biz.ClazzBiz;
import com.hz.ssm.model.Clazz;
import com.hz.ssm.util.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
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;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author黄仲
 * @site www.Hz.com
 * @company 公司
 * @create 2022-08-22 16:28
 */

@RestController
@RequestMapping("/clz/json")
public class JsonWeb {
    @Autowired
    private ClazzBiz clazzBiz;

    @RequestMapping("/clzEdit")
    public  String clzEdit(){
        System.out.println("JsonWeb.clzEdit");
        return  "clzEdit";
    }

//    list《T》
    @RequestMapping("/list")
    public List<Clazz> list(HttpServletRequest request,Clazz clazz){
        PageBean pageBean=new PageBean();
        pageBean.setRequest(request);
        if (true)
        throw new RuntimeException("系统繁忙,错误出现在 JsonController.list...");
        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);
    }

    // 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("/load")
    public Clazz load(HttpServletRequest request, Clazz clazz){
        PageBean pageBean=new PageBean();
        pageBean.setRequest(request);
        if(true)
            throw new RuntimeException("系统繁忙,请参考E007");

        return  this.clazzBiz.listPager(clazz,pageBean).get(0);
    }

//    map {
//    msg:""
//    混合对象
//    }
@RequestMapping("/hunhe")
public Map hunhe(HttpServletRequest request, Clazz clazz){
    PageBean pageBean=new PageBean();
    pageBean.setRequest(request);
    List<Clazz> lst = this.clazzBiz.listPager(clazz, pageBean);
     Map map=new HashMap();
     map.put("data",lst);
     map.put("pagebean",pageBean);
    return map;
}



}

2.全局异常处理的3种形式

package com.hz.ssm.exception;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author黄仲
 * @site www.Hz.com
 * @company 公司
 * @create 2022-08-22 18:41
 */
//@ControllerAdvice

public class GlobalExceptionResolver {
    @ExceptionHandler
    public ModelAndView handler(Exception e){
        ModelAndView mv=new ModelAndView();
        mv.setViewName("error");
        if (e instanceof  GlobalException){
            GlobalException exception= (GlobalException) e;
            mv.addObject("ex",exception.getMessage());
            mv.addObject("msg","全局异常,GlobalExceptionResolver错误码501");
        }else if(e instanceof  RuntimeException){
            RuntimeException exception= (RuntimeException) e;
            mv.addObject("ex",exception.getMessage());
            mv.addObject("msg","远行是异常,GlobalExceptionResolver错误码601");
        }
        return mv;
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值