Spring MVC 中的多响应 http 状态

2024-04-28

有以下代码:

@RequestMapping(value =  "/system/login", method = RequestMethod.GET)
public void login(@RequestBody Login login) {
    if(login.username == "test" && login.password == "test") {
         //return HTTP 200
    }
    else {
         //return HTTP 400
    }
}

我想根据我的逻辑返回两个不同的 HTTP 状态。实现这一目标的最佳方法是什么?


有人在 SO 上建议的一种方法是抛出不同的异常,这些异常将由不同的异常处理程序捕获:

@RequestMapping(value =  "/system/login", method = RequestMethod.GET)
public void login(@RequestBody Login login) {
    if(login.username == "test" && login.password == "test") {
         throw new AllRightException();
    }
    else {
         throw new AccessDeniedException();
    }
}

@ExceptionHandler(AllRightException.class)
@ResponseStatus(HttpStatus.OK)
public void whenAllRight() {

}

@ExceptionHandler(AccessDeniedException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public void whenAccessDenied() {

}

也可以看看:

  • @ExceptionHandler http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-ann-exceptionhandler
  • @ResponseStatus http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/ResponseStatus.html

顺便说一句,您的示例代码包含错误:login.password == "test"你应该使用equals()那里 :)


Updated:我发现了另一种更好的方法,因为它不使用异常:

@RequestMapping(value =  "/system/login", method = RequestMethod.GET)
public ResponseEntity<String> login(@RequestBody Login login) {
    if(login.username == "test" && login.password == "test") {
         return new ResponseEntity<String>("OK" HttpStatus.OK);
    }

    return new ResponseEntity<String>("ERROR", HttpStatus.BAD_REQUEST);
}

也可以看看响应实体API http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/http/ResponseEntity.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring MVC 中的多响应 http 状态 的相关文章

随机推荐

  • NSArray 的大小

    如何获得 a 的大小NSArray并使用在控制台中打印它NSLog int size array count NSLog there are d objects in the array size
  • 与 F# List.nth 的参数顺序混淆

    List nth is T 列表 gt 整数 gt T 而不是标准int gt T 列表 gt T like Seq nth 这使得管道有些尴尬 难道幕后有什么事情吗 我不知道为什么 可能是为了ocaml兼容性 http www csc v
  • 使用 getPathMatcher 的全局模式

    从 OCP 考试的 Kathy Sierra Bert Bates 书中我找到了以下代码 public class FileTest public static void matches Path path String glob Path
  • 在响应式网格上设置多个“相同高度”行部分的 CSS 唯一解决方案

    Wanted 仅 CSS 的解决方案 可在每行基础上启用多个等高网格 部分 并且也是响应式的 注意 这是一个后续问题这个问题 https stackoverflow com questions 44115503 css only solut
  • 如何在Nuxt Js中使用Google Map API?

    下面是我在 Nuxt Js 中获取 API 的代码 我已经编写了用于调用 API 的代码 但没有得到结果 我也没有得到任何与此相关的资源 async created const config headers Accept applicati
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 可以将矩形设置为显示边框吗?

    以下应用 public class Temp extends Application Override public void start Stage primaryStage StackPane root new StackPane Re
  • 挂载卷时无法运行 mariadb

    使用以下 docker compose yml 文件 version 2 services wordpress image wordpress ports 8080 80 environment WORDPRESS DB NAME my d
  • 数据与线的日期和时间转换

    我使用 D3 V5 创建了此图表 另外 我已在小提琴上附加了示例数据 您可以点击此处查看 https plnkr co edit pINxcS9yt9AuJmSk02Fs p preview 我已经包括了tick函数代码块 它在向左滑动的路
  • 在 iPhone 6 和 6 plus 中设置背景图像和图标图像

    如何区分 iPhone 5 和 iPhone 6 和 6 Plus 不同分辨率下的背景图像和图标图像 您必须在图像目录中启用 iOS 8 尺寸 它们在现有项目中默认关闭
  • 按公司名称过滤用户

    我试图让 Azure Active Directory 中的所有用户按以下条件过滤companyName过滤 我使用的电话是 v1 0 users select id mail displayName department filter c
  • R - 小鼠 - 添加一列,对具有估算值的列进行求和

    我有一个缺少数据的数据库 我需要估算数据 我使用的是小鼠 然后根据原始列创建新列 使用估算数据 我需要用这些新列进行统计分析 具体来说 我的参与者使用 7 点李克特量表填写了几份调查问卷 有些人没有回答所有问题 然后我需要估算值 1 对列中
  • 如何获取eclipse中的工作空间路径? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在研究PDE Eclipse Plugin Project 我需要获取工作区路径 我的文本小部件 swt 应该设置为当前工作空间路径 如
  • 在可序列化 Java 类中使用记录器的正确方法是什么?

    我有以下 doctored 我正在开发的系统中的类以及Findbugs http findbugs sourceforge net 正在生成一个SE BAD FIELD http findbugs sourceforge net bugDe
  • 单击表格行后如何刷新部分视图

    我有与模型链接的表格 foreach var item in Model tr td Html DisplayFor x gt item Field1 td td Html DisplayFor x gt item Field2 td tr
  • 初始化组件不存在

    InitializeComponent 此代码行出现在我的所有 Xaml 页面的构造函数中的代码隐藏中 它抛出以下错误 初始化组件不存在 现在我无法调试项目中的任何页面 尽管我已经注释掉了这一行 我怎样才能解决这个问题 任何帮助将不胜感激
  • Android 布局 xml 文件中 TextView 的首字母大写

    我在布局 xml 文件中有一个 TextView 如下所示
  • JDBC多线程插入可以吗?

    我目前正在开发一个 Java 项目 我需要准备一个大的 对我来说 mysql 数据库 我必须使用 Jsoup 进行网页抓取并将结果存储到我的数据库中 据我估计 我将大约插入 1 500 000 到 2 000 000 条记录 在我的第一次试
  • 高级 SQLite 更新表查询

    我正在尝试更新数据库的表 B 如下所示 Table A id amount date b id 1 200 6 31 2012 1 2 300 6 31 2012 1 3 400 6 29 2012 2 4 200 6 31 2012 1
  • Spring MVC 中的多响应 http 状态

    有以下代码 RequestMapping value system login method RequestMethod GET public void login RequestBody Login login if login user