使用@ResponseStatus注解的注意事项

当@ResponseStatus用在方法上,如

@RequestMapping("/test")
@ResponseStatus(reason="ok",code=HttpStatus.OK)
public String test() {
    return "test";
}

如果只是为了指示返回状态码,最好不要添加reason属性。
如果添加了reason属性,且reason不为"",且code > 0(哪怕状态码是200),会对当前请求走错误处理。

原因

org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod 类中,设置返回状态。如图:

io.undertow.servlet.handlers.ServletInitialHandler 类中,判断错误码,如图:

返回状态码的其他方案

返回状态码也可通过modelAndView.setStatus()实现,如

@RequestMapping(value = { "/test" }, method = RequestMethod.GET)
public ModelAndView test() {
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("test");
    modelAndView.setStatus(HttpStatus.INTERNAL_SERVER_ERROR);
    return modelAndView;
}

原文地址:http://blog.51cto.com/7266799/2314818

时间: 2024-11-13 09:08:11

使用@ResponseStatus注解的注意事项的相关文章

spring mvc @ResponseStatus 注解 注释返回中文乱码的问题

前言 前文中讲到,使用@ResponseStatus注解,可以修饰一个异常类,在发生异常的时候返回指定的错误码和消息,在返回的 reason中包含中文的时候,就会出现中文乱码的问题 现象 reason中包含中文的时候,前端返回为乱码 /** * 自定义异常类 * * @author Administrator * */ @ResponseStatus(value = HttpStatus.FORBIDDEN, reason = "没有权限") public class TestExce

spring+hibernate+Struts2 整合(全注解及注意事项)

最近帮同学做毕设,一个物流管理系统,一个点餐系统,用注解开发起来还是很快的,就是刚开始搭环境费了点事,今天把物流管理系统的一部分跟环境都贴出来,有什么不足的,请大神不吝赐教. 1.结构如下 2.jar包如下 3.首先是spring.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"

@ResponseStatus注解作用

@ResponseStatus注解有两种用法,一种是加载自定义异常类上,一种是加在目标方法中 这里我们说一下加在目标方法上的这种情况,注解中有两个参数,value属性设置异常的状态码,reaseon是异常的描述, 需要重点注意的是不管该方法是不是发生了异常,将@ResponseStatus注解加在目标方法上,一定会抛出异常.但是如果没有发生异常的话方法会正常执行完毕. 输出结果: @ResponseStatus注解配合@ExceptionHandler注解使用会更好 原文地址:https://w

springboot~Transactional注解的注意事项

@Transactional注解是为方法添加事务块的意思,使用aop的技术动态为方法添加事务范围,在使用它时可以在类或者方法上添加,但在类上添加时需要注意一下影响的范围. 类中添加Transactional 相当于你的每个公共的方法都会被迫加上事务,这并不是一件好事,所以不建议这样干. 拦截器里调用的Bean 在http的拦截器里,调用了一个类,这个类是个bean,而它被添加了Transactional注解,这相当于,你以后的每个HTTP请求都会被加上事务,这是很要命的,因为那些单表操作是不需要

Spring入门(十三):Spring MVC常用注解讲解

在使用Spring MVC开发Web应用程序时,控制器Controller的开发非常重要,虽然说视图(JSP或者是Thymeleaf)也很重要,因为它才是直接呈现给用户的,不过由于现在前端越来越重要,很多公司都开始采用前后端分离的开发模式,所以我们暂时可以将精力放在开发控制器上. 使用Spring MVC开发控制器主要使用以下7个注解: @Controller @RequestMapping @ResponseBody @RequestParam @PathVariable @RequestBo

[转]从MVC到前后端分离

从MVC到前后端分离 来源:csdn 发布时间:2015-10-26 阅读次数:1680 1. 理解MVC MVC是一种经典的设计模式,全名为Model-View-Controller,即模型-视图-控制器. 其中,模型是用于封装数据的载体,例如,在Java中一般通过一个简单的POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的Java Bean,包含一系列的成员变量及其getter/setter方法.对于视图而言,它更加偏重于展现,也就是说,视图决定了界面

SpringMVC源码解析 - HandlerMethod

HandlerMethod及子类主要用于封装方法调用相关信息,子类还提供调用,参数准备和返回值处理的职责. 分析下各个类的职责吧(顺便做分析目录): HandlerMethod 封装方法定义相关的信息,如类,方法,参数等. 使用场景:HandlerMapping时会使用 InvocableHandlerMethod 添加参数准备,方法调用功能 使用场景:执行使用@ModelAttribute注解会使用 ServletInvocableHandlerMethod 添加返回值处理职责,Respons

从 MVC 到前后端分离——转自:OSChina 黄勇

转自:OSChina 黄勇 从 MVC 到前后端分离 1 理解 MVC MVC 是一种经典的设计模式,全名为 Model-View-Controller,即 模型-视图-控制器. 其中,模型 是用于封装数据的载体,例如,在 Java 中一般通过一个简单的 POJO(Plain Ordinary Java Object)来表示,其本质是一个普通的 Java Bean,包含一系列的成员变量及其 getter/setter 方法.对于 视图 而言,它更加偏重于展现,也就是说,视图决定了界面到底长什么样

用doxygen+graphviz自动化生成代码文档(附详细教程)

一.引子 用这两个工具可以自动的遍历代码,并且产生代码文档,我们先来看看效果,然后放出这两个工具的下载地址. 二.工具的下载地址 doxygen:http://www.stack.nl/~dimitri/doxygen/download.html graphviz:http://www.graphviz.org/ 三.使用步骤 首先安装doxygen,然后解压下载好的graphviz.接着打开doxygen,按照我下面的图示进行操作就好了. 最后点run就可以了. 附上doxygen能识别的一些