SpringMVC是一个基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架。在SpringMVC中,我们可以通过@ResponseBody注解和@ControllerAdvice注解来实现JSON返回和异常处理。

首先,我们来看看如何在SpringMVC中返回JSON数据。通常情况下,我们会使用@ResponseBody这个注解。这个注解可以放在方法上,也可以放在类上。

当你把@ResponseBody放到方法上时,表示该方法的返回结果直接写入HTTP response body中(一般用于异步获取数据),HTTP response body中数据不是html标签的页面源码(比如json、xml等),所以也就不会被视图渲染器处理。

当你把@ResponseBody放到类上时,则表示该类所有方法都会直接写入HTTP response body而不进行视图渲染。

例如:

@Controller
public class MyController {
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    @ResponseBody
    public Map<String, Object> test() {
        Map<String, Object> map = new HashMap<>();
        map.put("key", "value");
        return map;
    }
}

以上代码将以JSON格式返回一个键值对"key":"value"。注意:为了能够让Spring MVC输出Json格式需要添加相关依赖库(比如jackson)到项目里面去。

然后让我们看一下异常处理机制,在Spring MVC 3.2之后提供了@ControllerAdvice这个特性用于全局异常处理、全局数据绑定、全局数据预处理。我们可以通过@ControllerAdvice来实现全局异常处理。

@ControllerAdvice是一个@Component,用于定义@ExceptionHandler,@InitBinder和@ModelAttribute方法,适用于所有使用@RequestMapping的方法。简单来说就是所有的@RequestMapping都会先执行这个(如果有定义的话)。

例如:

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public Map<String, Object> handleException(Exception e) {
        Map<String, Object> map = new HashMap<>();
        map.put("errorCode", 500);
        map.put("errorMsg", e.getMessage());
        return map;
    }
}

以上代码表示当程序出现Exception类型异常时,会被handleException方法捕获到,并返回一个包含错误码和错误信息的JSON数据。

总结一下,在SpringMVC中我们可以通过@ResponseBody注解返回JSON数据,并且可以使用@ControllerAdvice注解进行全局异常处理。这两个功能在实际开发中非常常用,并且使用起来也非常方便。


海外免备案云服务器链接:www.tsyvps.com

蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。

蓝易云是一家专注于香港及国内数据中心服务的提供商,提供高质量的服务器租用和云计算服务、包括免备案香港服务器、香港CN2、美国服务器、海外高防服务器、国内高防服务器、香港VPS等。致力于为用户提供稳定,快速的网络连接和优质的客户体验。
最后修改:2023 年 09 月 25 日
如果觉得我的文章对你有用,请随意赞赏