您的位置:首页 > 编程语言 > Java开发

SpringMVC中@ResponseStatus注解用法

2020-07-12 17:24 731 查看

@ResponseStatus 可以用于修饰一个类或者一个方法。修饰一个类的时候一般是一个异常类对类中所有方法起作用;当修饰一个方法时则是当该方法被触发且内部发生@ResponseStatus修饰异常时才起作用。

一般在一个异常类在类上面加上@ResponseStatus注解,就表明在系统运行期间,当抛出这个用@ResponseStatus修饰的异常时,就会使用这个异常类@ResponseStatus注解上的 error code 和 error reasoon 返回给客户端,从而使异常信息以更友好的方式展示给用户,也提高可读性。

如下例子:

MyException.java:

package com.myspringmvc.controller;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

/**
* 自定义一个异常类,用@ResponseStatus修饰,当这个异常类型发生时用403和"Are you okay?"输出
*/
@ResponseStatus(value = HttpStatus.FORBIDDEN, reason = "Are you okay?")
public class MyException extends RuntimeException {
}

MyController.java:

package com.myspringmvc.controller;
import org.apache.http.HttpResponse;
import org.springframework.http.HttpRequest;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import java.util.HashMap;
import java.util.Map;

/**
* SpringMVC
* 1.扫描整个项目
* 2.判断类是否有Controller或RequestMapping修饰
* 3.扫描方法,判断方法有没RequestMapping修饰
* 4.把类+方法注解的路径拼接值和全限定方法名绑定到map里
*/
@Controller
@RequestMapping(value="/web")
public class MyController {

@RequestMapping(value="/hi", method = RequestMethod.GET)
@ResponseBody
public String sayHi(@RequestParam("name") String name){
System.out.println("sayHi调用了...");
if ("yang".equals(name)){
throw new MyException();
}
return "hello "+name;
}

}

当请求http://localhost:9090/web/hi?name=yang时手动抛出MyException异常,则就会触发这个@ResponseStatus注解上的 error code 和 error reasoon 返回给客户端

这是SpringMVC的一个注解应用,具体场景在工作中可以摸索引用,这里仅做记录。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐