介绍:

在Spring MVC中,我们可以通过几种方式设置HttpResponse的状态。 在本教程中,我们将使用@ResponseStatus批注实现它。

我们可以使用@ResponseStatus标记带有状态码和应返回原因的方法或异常类。 在调用标记的处理程序方法时或引发指定的异常时, HTTP状态将设置为使用@ResponseStatus批注定义的状态

使用方法:

默认情况下,我们的Spring Controller中的方法在成功执行时会返回HTTP Status 200(OK)

如果我们想从一个控制器方法中返回另一种类型的HttpStatus怎么办? 为此,我们可以使用@ResponseStatus对其进行标记

@RequestMapping(method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void storeEmployee(@RequestBody Employee employee) {...
}

(可选)我们可以使用此批注标记Controller类。 在这种情况下,响应代码配置将应用于所有请求处理程序方法。

我们还可以选择使用此批注来标记@ExceptionHandler@ControllerAdvice bean中的方法。

请注意, 仅当标记的方法成功执行且没有引发任何异常时Spring才会使用@ResponseStatus

我们可以使用@ResponseStatus批注标记异常类:

@ReponseStatus(value = HttpStatus.FORBIDDEN, reason = "Employee isn't authorized")
public class EmployeeAccessDeniedException extends Exception {public EmployeeAccessDeniedException(String msg) {super(msg);}
}

当Spring捕获到这样的异常时,它将基于提供的设置抛出响应状态。 注意, 除非我们也用@ResponseStatus标记它们,否则Spring将对所有子类使用相同的状态配置。

在这里,我们还指定了例外原因

Spring将调用HttpServletResponse.sendError()方法

  • @ResponseStatus用于方法以及提供的原因 ,或者
  • 在异常类上使用@ResponseStatus

使用sendError()方法意味着它会生成HTML错误页面并将其发送到客户端。 因此 REST Controller方法中 使用@ResponseStatus应避免提及原因

结论:

在本快速教程中,我们研究了如何在Spring MVC中设置HttpResponse的状态。 我们了解了@ResponseStatus与方法以及异常类的用法。

翻译自: https://www.javacodegeeks.com/2019/05/using-responsestatus-http-status-spring.html

在Spring中使用@ResponseStatus获取Http状态相关推荐

  1. Spring中@Value注解获取不到配置值

    @Value注解必须要在spring的bean中才能使用,不能自己new一个对象调用 产生原因: 在SpringBoot中使用@Value只能给普通变量赋值,不能给静态变量赋值 解决方法: 给静态变量 ...

  2. spring中jso文件获取后台数据时注意的点

    在jsp文件的script将后台的数据拼写并展示到页面 var tr = '<tr><td>' + s.baby_id + '</td>';tr += '<t ...

  3. EF中的EntityState几个状态的说明

    之前使用EF,我们都是通过调用SaveChanges方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加.修改还是删除呢?答案是通过EntityState枚举来判断的,我们看一 ...

  4. day05 Spring中自定义注解的用处-之获取自定义的Servie

    PS: 在RPC远程调用中,想要获取自定义的service的方法,就得自定义标签遍历拿到方法 PS:在spring中,两个最核心的 概念是aop和ioc,aop其实就是动态代理. ioc 就是解决对象 ...

  5. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系

    spring中获取servletcontext 代码如下,关键是要知道 contextLoader的强大!其它很简单 WebApplicationContext webApplicationConte ...

  6. HttpHandler(ashx)中获取Session状态

    HttpHandler(ashx)中获取Session状态 这里为自己或后来困惑的朋友做一个提醒的记录,当想要在HttpHandler(ashx文件)中访问Session的状态值时,需要显式的实现一个 ...

  7. java 获取spring对象数组_解析Java中如何获取Spring中配置的bean

    解析Java中如何获取Spring中配置的bean Java中如何获取Spring中配置的bean?下面是由百分网小编为大家整理的解析Java中如何获取Spring中配置的bean,喜欢的可以收藏一下 ...

  8. controller调用另一个controller中的方法 获取返回值_必须掌握!你知道 Spring 中运用的 9 种设计模式吗 ?...

    Spring中涉及的设计模式总结,在面试中也会经常问道 Spring 中设计模式的问题.本文以实现方式.实质.实现原理的结构简单介绍 Sping 中应用的 9 种设计模型,具体详细的刨析会在后面的文章 ...

  9. Java笔记-通过反射获取注解及Spring中获取某包下的所有class文件

    首先来看看使用反射来获取注解名: 只需在获取class后调用getAnnotation方法即可,如下 这里是获取JPA映射b表名,Table.class,使用下面这个可以获取表名 import jav ...

最新文章

  1. ssm路径访问不到_ssm整合!!!
  2. firefox(火狐)使用自动填充记住的用户名密码时,会将密码填充到相同name的文本域解决办法...
  3. Learning to Rank 中Listwise关于ListNet算法讲解及实现
  4. 基于TCP的Socket通讯
  5. 通信开源linux,Linux环境进程间通信
  6. spring health_为什么Spring的Health会再次向下,向下,向上,向上,向上和向下?...
  7. vue项目目录结构分析、过滤器、vue文件中基础template、script、style
  8. 网络编程基础知识(待更新补充)
  9. 如何在IIS7或IIS7.5中导入导出站点及应用程序池.
  10. 系统学习机器学习之弱监督学习(三)--Adversarial Autoencoders
  11. IDEA 这样配置注释模板,让你高出一个逼格!
  12. 《前端之路》之 JavaScript 高级技巧、高阶函数(一)
  13. golang实现简单rpc调用
  14. 死链提交为什么不能提交 html文件,搜狗死链提交
  15. ArchSummit 北京 2016之lookalike主题
  16. 听王自如聊蜕变历程:云计算时代如何输出价值
  17. 派对屋3000效果器怎样调试_音响效果器的调试和使用技巧
  18. 我的vim的vimrc配置文件,保存用 - 飞在天空的鱼 - 博客频道
  19. Check Point设置允许外网通过指定端口访问服务器
  20. python毕业设计项目源码选题(5)校园网站系统毕业设计毕设作品开题报告开题答辩PPT

热门文章

  1. ssl提高组周三备考赛【2018.10.24】
  2. POJ2352-Stars【树状数组】
  3. 【数论】GCD SUM(P2398)
  4. <table/>设置列宽度无效的问题
  5. MySQL存储引擎中MyISAM和InnoDB区别
  6. 类和对象运行时在内存里是怎么样的?各种变量、方法在运行时是怎么交互的?
  7. Oracle入门(十二G)之序列
  8. Java命令学习系列(二)——Jstack
  9. 接口 DataOutput
  10. github详细搜索