在Spring中使用@ResponseStatus获取Http状态
介绍:
在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状态相关推荐
- Spring中@Value注解获取不到配置值
@Value注解必须要在spring的bean中才能使用,不能自己new一个对象调用 产生原因: 在SpringBoot中使用@Value只能给普通变量赋值,不能给静态变量赋值 解决方法: 给静态变量 ...
- spring中jso文件获取后台数据时注意的点
在jsp文件的script将后台的数据拼写并展示到页面 var tr = '<tr><td>' + s.baby_id + '</td>';tr += '<t ...
- EF中的EntityState几个状态的说明
之前使用EF,我们都是通过调用SaveChanges方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加.修改还是删除呢?答案是通过EntityState枚举来判断的,我们看一 ...
- day05 Spring中自定义注解的用处-之获取自定义的Servie
PS: 在RPC远程调用中,想要获取自定义的service的方法,就得自定义标签遍历拿到方法 PS:在spring中,两个最核心的 概念是aop和ioc,aop其实就是动态代理. ioc 就是解决对象 ...
- Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
spring中获取servletcontext 代码如下,关键是要知道 contextLoader的强大!其它很简单 WebApplicationContext webApplicationConte ...
- HttpHandler(ashx)中获取Session状态
HttpHandler(ashx)中获取Session状态 这里为自己或后来困惑的朋友做一个提醒的记录,当想要在HttpHandler(ashx文件)中访问Session的状态值时,需要显式的实现一个 ...
- java 获取spring对象数组_解析Java中如何获取Spring中配置的bean
解析Java中如何获取Spring中配置的bean Java中如何获取Spring中配置的bean?下面是由百分网小编为大家整理的解析Java中如何获取Spring中配置的bean,喜欢的可以收藏一下 ...
- controller调用另一个controller中的方法 获取返回值_必须掌握!你知道 Spring 中运用的 9 种设计模式吗 ?...
Spring中涉及的设计模式总结,在面试中也会经常问道 Spring 中设计模式的问题.本文以实现方式.实质.实现原理的结构简单介绍 Sping 中应用的 9 种设计模型,具体详细的刨析会在后面的文章 ...
- Java笔记-通过反射获取注解及Spring中获取某包下的所有class文件
首先来看看使用反射来获取注解名: 只需在获取class后调用getAnnotation方法即可,如下 这里是获取JPA映射b表名,Table.class,使用下面这个可以获取表名 import jav ...
最新文章
- ssm路径访问不到_ssm整合!!!
- firefox(火狐)使用自动填充记住的用户名密码时,会将密码填充到相同name的文本域解决办法...
- Learning to Rank 中Listwise关于ListNet算法讲解及实现
- 基于TCP的Socket通讯
- 通信开源linux,Linux环境进程间通信
- spring health_为什么Spring的Health会再次向下,向下,向上,向上,向上和向下?...
- vue项目目录结构分析、过滤器、vue文件中基础template、script、style
- 网络编程基础知识(待更新补充)
- 如何在IIS7或IIS7.5中导入导出站点及应用程序池.
- 系统学习机器学习之弱监督学习(三)--Adversarial Autoencoders
- IDEA 这样配置注释模板,让你高出一个逼格!
- 《前端之路》之 JavaScript 高级技巧、高阶函数(一)
- golang实现简单rpc调用
- 死链提交为什么不能提交 html文件,搜狗死链提交
- ArchSummit 北京 2016之lookalike主题
- 听王自如聊蜕变历程:云计算时代如何输出价值
- 派对屋3000效果器怎样调试_音响效果器的调试和使用技巧
- 我的vim的vimrc配置文件,保存用 - 飞在天空的鱼 - 博客频道
- Check Point设置允许外网通过指定端口访问服务器
- python毕业设计项目源码选题(5)校园网站系统毕业设计毕设作品开题报告开题答辩PPT