java-ee – Spring MVC中的多个响应http状态

前端之家收集整理的这篇文章主要介绍了java-ee – Spring MVC中的多个响应http状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
具有以下代码: @H_403_2@@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中提出的一种方法是抛出不同的异常,这些异常将被不同的异常处理程序所捕获: @H_403_2@@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
> @ResponseStatus

BTW,你的示例代码包含错误:login.password ==“test”你应该使用equals()有:)

更新:我发现另一种方法更好,因为它不使用例外:

@H_403_2@@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); }

参见ResponseEntity API

原文链接:https://www.f2er.com/java/123042.html

猜你在找的Java相关文章