SpringMVC如何自定义响应的HTTP状态码

自定义响应的HTTP状态码

SpringMVC自定义响应的HTTP状态码有两种方法,一种是在返回方法上面加上@ResponseStatus注解,另一个种是在方法内部使用response.setStatus()方法。

注解方式

@ResponseStatus一般是作用在异常类或者方法上,带有@ResponseStatus注解的异常类会被ResponseStatusExceptionResolver 解析,可以实现自定义的一些异常,同时在页面上进行显示。

作用在方法上时,将会修改response的状态码

示例:

@RequestMapping("/204test")
@ResponseStatus(value=HttpStatus.NO_CONTENT)
public void ping(HttpServletResponse response) throws Exception {
    System.out.println("20444");
}

response.setStatus()方式

示例:

  public ModelAndView respond(HttpServletResponse response) throws Exception {
    response.setStatus(status);
    response.setContentType(contentType);
    response.setHeader("Content-Disposition", "Inline; filename=" + jobName + "Properties.csv");
    response.getWriter().write(message);
    return null;
  }
}

http状态码406(Not Acceptable)

先看看406状态码解释

—HTTP 406错误是HTTP协议状态码的一种,表示无法使用请求的内容特性来响应请求的网页

大概意思就是请求和程序是没有问题的,但是响应内容无法解析

SpringMVC如何自定义响应的HTTP状态码_第1张图片

这个时候想到返回的是一个对象,页面需要接受的话需要Jackson的支持,果断想到问题:缺少Jackson包,修改pom后update project

问题成功解决!!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(SpringMVC如何自定义响应的HTTP状态码)